1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_chart2.hxx" 30 31 #include "SceneProperties.hxx" 32 #include "macros.hxx" 33 #include "ChartTypeHelper.hxx" 34 #include "ThreeDHelper.hxx" 35 #include <com/sun/star/beans/PropertyAttribute.hpp> 36 #include <com/sun/star/drawing/HomogenMatrix.hpp> 37 #include <com/sun/star/drawing/ShadeMode.hpp> 38 #include <com/sun/star/drawing/Direction3D.hpp> 39 #include <com/sun/star/drawing/ProjectionMode.hpp> 40 #include <com/sun/star/drawing/CameraGeometry.hpp> 41 42 // for F_PI 43 #include <tools/solar.h> 44 45 using namespace ::com::sun::star; 46 47 using ::com::sun::star::beans::Property; 48 49 namespace chart 50 { 51 52 void SceneProperties::AddPropertiesToVector( 53 ::std::vector< Property > & rOutProperties ) 54 { 55 // transformation matrix 56 rOutProperties.push_back( 57 Property( C2U( "D3DTransformMatrix" ), 58 PROP_SCENE_TRANSF_MATRIX, 59 ::getCppuType( reinterpret_cast< const drawing::HomogenMatrix * >(0)), 60 beans::PropertyAttribute::BOUND 61 | beans::PropertyAttribute::MAYBEVOID 62 | beans::PropertyAttribute::MAYBEDEFAULT )); 63 64 // distance: deprecated ( this is not used by the chart view; it's only here for compatibility with old chart ) 65 rOutProperties.push_back( 66 Property( C2U( "D3DSceneDistance" ), 67 PROP_SCENE_DISTANCE, 68 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 69 beans::PropertyAttribute::BOUND 70 | beans::PropertyAttribute::MAYBEVOID 71 | beans::PropertyAttribute::MAYBEDEFAULT )); 72 73 // focalLength: deprecated ( this is not used by the chart view; it's only here for compatibility with old chart ) 74 rOutProperties.push_back( 75 Property( C2U( "D3DSceneFocalLength" ), 76 PROP_SCENE_FOCAL_LENGTH, 77 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 78 beans::PropertyAttribute::BOUND 79 | beans::PropertyAttribute::MAYBEVOID 80 | beans::PropertyAttribute::MAYBEDEFAULT )); 81 82 // shadowSlant 83 rOutProperties.push_back( 84 Property( C2U( "D3DSceneShadowSlant" ), 85 PROP_SCENE_SHADOW_SLANT, 86 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 87 beans::PropertyAttribute::BOUND 88 | beans::PropertyAttribute::MAYBEVOID 89 | beans::PropertyAttribute::MAYBEDEFAULT )); 90 91 // shadeMode 92 rOutProperties.push_back( 93 Property( C2U( "D3DSceneShadeMode" ), 94 PROP_SCENE_SHADE_MODE, 95 ::getCppuType( reinterpret_cast< const drawing::ShadeMode * >(0)), 96 beans::PropertyAttribute::BOUND 97 | beans::PropertyAttribute::MAYBEVOID 98 | beans::PropertyAttribute::MAYBEDEFAULT )); 99 100 // ambientColor 101 rOutProperties.push_back( 102 Property( C2U( "D3DSceneAmbientColor" ), 103 PROP_SCENE_AMBIENT_COLOR, 104 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 105 beans::PropertyAttribute::BOUND 106 | beans::PropertyAttribute::MAYBEVOID 107 | beans::PropertyAttribute::MAYBEDEFAULT )); 108 109 // lightingMode 110 rOutProperties.push_back( 111 Property( C2U( "D3DSceneTwoSidedLighting" ), 112 PROP_SCENE_TWO_SIDED_LIGHTING, 113 ::getBooleanCppuType(), 114 beans::PropertyAttribute::BOUND 115 | beans::PropertyAttribute::MAYBEVOID 116 | beans::PropertyAttribute::MAYBEDEFAULT )); 117 118 // camera geometry 119 rOutProperties.push_back( 120 Property( C2U( "D3DCameraGeometry" ), 121 PROP_SCENE_CAMERA_GEOMETRY, 122 ::getCppuType( reinterpret_cast< const drawing::CameraGeometry * >(0)), 123 beans::PropertyAttribute::BOUND 124 | beans::PropertyAttribute::MAYBEVOID 125 | beans::PropertyAttribute::MAYBEDEFAULT )); 126 127 // perspective 128 rOutProperties.push_back( 129 Property( C2U( "D3DScenePerspective" ), 130 PROP_SCENE_PERSPECTIVE, 131 ::getCppuType( reinterpret_cast< const drawing::ProjectionMode * >(0)), 132 beans::PropertyAttribute::BOUND 133 | beans::PropertyAttribute::MAYBEVOID 134 | beans::PropertyAttribute::MAYBEDEFAULT )); 135 136 137 // Light Sources 138 // ------------- 139 // light source 1 140 rOutProperties.push_back( 141 Property( C2U( "D3DSceneLightColor1" ), 142 PROP_SCENE_LIGHT_COLOR_1, 143 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 144 beans::PropertyAttribute::BOUND 145 | beans::PropertyAttribute::MAYBEVOID 146 | beans::PropertyAttribute::MAYBEDEFAULT )); 147 rOutProperties.push_back( 148 Property( C2U( "D3DSceneLightDirection1" ), 149 PROP_SCENE_LIGHT_DIRECTION_1, 150 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 151 beans::PropertyAttribute::BOUND 152 | beans::PropertyAttribute::MAYBEVOID 153 | beans::PropertyAttribute::MAYBEDEFAULT )); 154 rOutProperties.push_back( 155 Property( C2U( "D3DSceneLightOn1" ), 156 PROP_SCENE_LIGHT_ON_1, 157 ::getBooleanCppuType(), 158 beans::PropertyAttribute::BOUND 159 | beans::PropertyAttribute::MAYBEVOID 160 | beans::PropertyAttribute::MAYBEDEFAULT )); 161 // light source 2 162 rOutProperties.push_back( 163 Property( C2U( "D3DSceneLightColor2" ), 164 PROP_SCENE_LIGHT_COLOR_2, 165 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 166 beans::PropertyAttribute::BOUND 167 | beans::PropertyAttribute::MAYBEVOID 168 | beans::PropertyAttribute::MAYBEDEFAULT )); 169 rOutProperties.push_back( 170 Property( C2U( "D3DSceneLightDirection2" ), 171 PROP_SCENE_LIGHT_DIRECTION_2, 172 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 173 beans::PropertyAttribute::BOUND 174 | beans::PropertyAttribute::MAYBEVOID 175 | beans::PropertyAttribute::MAYBEDEFAULT )); 176 rOutProperties.push_back( 177 Property( C2U( "D3DSceneLightOn2" ), 178 PROP_SCENE_LIGHT_ON_2, 179 ::getBooleanCppuType(), 180 beans::PropertyAttribute::BOUND 181 | beans::PropertyAttribute::MAYBEVOID 182 | beans::PropertyAttribute::MAYBEDEFAULT )); 183 // light source 3 184 rOutProperties.push_back( 185 Property( C2U( "D3DSceneLightColor3" ), 186 PROP_SCENE_LIGHT_COLOR_3, 187 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 188 beans::PropertyAttribute::BOUND 189 | beans::PropertyAttribute::MAYBEVOID 190 | beans::PropertyAttribute::MAYBEDEFAULT )); 191 rOutProperties.push_back( 192 Property( C2U( "D3DSceneLightDirection3" ), 193 PROP_SCENE_LIGHT_DIRECTION_3, 194 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 195 beans::PropertyAttribute::BOUND 196 | beans::PropertyAttribute::MAYBEVOID 197 | beans::PropertyAttribute::MAYBEDEFAULT )); 198 rOutProperties.push_back( 199 Property( C2U( "D3DSceneLightOn3" ), 200 PROP_SCENE_LIGHT_ON_3, 201 ::getBooleanCppuType(), 202 beans::PropertyAttribute::BOUND 203 | beans::PropertyAttribute::MAYBEVOID 204 | beans::PropertyAttribute::MAYBEDEFAULT )); 205 // light source 4 206 rOutProperties.push_back( 207 Property( C2U( "D3DSceneLightColor4" ), 208 PROP_SCENE_LIGHT_COLOR_4, 209 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 210 beans::PropertyAttribute::BOUND 211 | beans::PropertyAttribute::MAYBEVOID 212 | beans::PropertyAttribute::MAYBEDEFAULT )); 213 rOutProperties.push_back( 214 Property( C2U( "D3DSceneLightDirection4" ), 215 PROP_SCENE_LIGHT_DIRECTION_4, 216 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 217 beans::PropertyAttribute::BOUND 218 | beans::PropertyAttribute::MAYBEVOID 219 | beans::PropertyAttribute::MAYBEDEFAULT )); 220 rOutProperties.push_back( 221 Property( C2U( "D3DSceneLightOn4" ), 222 PROP_SCENE_LIGHT_ON_4, 223 ::getBooleanCppuType(), 224 beans::PropertyAttribute::BOUND 225 | beans::PropertyAttribute::MAYBEVOID 226 | beans::PropertyAttribute::MAYBEDEFAULT )); 227 // light source 5 228 rOutProperties.push_back( 229 Property( C2U( "D3DSceneLightColor5" ), 230 PROP_SCENE_LIGHT_COLOR_5, 231 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 232 beans::PropertyAttribute::BOUND 233 | beans::PropertyAttribute::MAYBEVOID 234 | beans::PropertyAttribute::MAYBEDEFAULT )); 235 rOutProperties.push_back( 236 Property( C2U( "D3DSceneLightDirection5" ), 237 PROP_SCENE_LIGHT_DIRECTION_5, 238 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 239 beans::PropertyAttribute::BOUND 240 | beans::PropertyAttribute::MAYBEVOID 241 | beans::PropertyAttribute::MAYBEDEFAULT )); 242 rOutProperties.push_back( 243 Property( C2U( "D3DSceneLightOn5" ), 244 PROP_SCENE_LIGHT_ON_5, 245 ::getBooleanCppuType(), 246 beans::PropertyAttribute::BOUND 247 | beans::PropertyAttribute::MAYBEVOID 248 | beans::PropertyAttribute::MAYBEDEFAULT )); 249 // light source 6 250 rOutProperties.push_back( 251 Property( C2U( "D3DSceneLightColor6" ), 252 PROP_SCENE_LIGHT_COLOR_6, 253 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 254 beans::PropertyAttribute::BOUND 255 | beans::PropertyAttribute::MAYBEVOID 256 | beans::PropertyAttribute::MAYBEDEFAULT )); 257 rOutProperties.push_back( 258 Property( C2U( "D3DSceneLightDirection6" ), 259 PROP_SCENE_LIGHT_DIRECTION_6, 260 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 261 beans::PropertyAttribute::BOUND 262 | beans::PropertyAttribute::MAYBEVOID 263 | beans::PropertyAttribute::MAYBEDEFAULT )); 264 rOutProperties.push_back( 265 Property( C2U( "D3DSceneLightOn6" ), 266 PROP_SCENE_LIGHT_ON_6, 267 ::getBooleanCppuType(), 268 beans::PropertyAttribute::BOUND 269 | beans::PropertyAttribute::MAYBEVOID 270 | beans::PropertyAttribute::MAYBEDEFAULT )); 271 // light source 7 272 rOutProperties.push_back( 273 Property( C2U( "D3DSceneLightColor7" ), 274 PROP_SCENE_LIGHT_COLOR_7, 275 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 276 beans::PropertyAttribute::BOUND 277 | beans::PropertyAttribute::MAYBEVOID 278 | beans::PropertyAttribute::MAYBEDEFAULT )); 279 rOutProperties.push_back( 280 Property( C2U( "D3DSceneLightDirection7" ), 281 PROP_SCENE_LIGHT_DIRECTION_7, 282 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 283 beans::PropertyAttribute::BOUND 284 | beans::PropertyAttribute::MAYBEVOID 285 | beans::PropertyAttribute::MAYBEDEFAULT )); 286 rOutProperties.push_back( 287 Property( C2U( "D3DSceneLightOn7" ), 288 PROP_SCENE_LIGHT_ON_7, 289 ::getBooleanCppuType(), 290 beans::PropertyAttribute::BOUND 291 | beans::PropertyAttribute::MAYBEVOID 292 | beans::PropertyAttribute::MAYBEDEFAULT )); 293 // light source 8 294 rOutProperties.push_back( 295 Property( C2U( "D3DSceneLightColor8" ), 296 PROP_SCENE_LIGHT_COLOR_8, 297 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 298 beans::PropertyAttribute::BOUND 299 | beans::PropertyAttribute::MAYBEVOID 300 | beans::PropertyAttribute::MAYBEDEFAULT )); 301 rOutProperties.push_back( 302 Property( C2U( "D3DSceneLightDirection8" ), 303 PROP_SCENE_LIGHT_DIRECTION_8, 304 ::getCppuType( reinterpret_cast< const drawing::Direction3D * >(0)), 305 beans::PropertyAttribute::BOUND 306 | beans::PropertyAttribute::MAYBEVOID 307 | beans::PropertyAttribute::MAYBEDEFAULT )); 308 rOutProperties.push_back( 309 Property( C2U( "D3DSceneLightOn8" ), 310 PROP_SCENE_LIGHT_ON_8, 311 ::getBooleanCppuType(), 312 beans::PropertyAttribute::BOUND 313 | beans::PropertyAttribute::MAYBEVOID 314 | beans::PropertyAttribute::MAYBEDEFAULT )); 315 } 316 317 void SceneProperties::AddDefaultsToMap( 318 ::chart::tPropertyValueMap & rOutMap ) 319 { 320 // Identity Matrix 321 drawing::HomogenMatrix aMtx; 322 aMtx.Line1.Column1 = aMtx.Line2.Column2 = 323 aMtx.Line3.Column3 = aMtx.Line4.Column4 = 1.0; 324 aMtx.Line1.Column2 = aMtx.Line1.Column3 = aMtx.Line1.Column4 = 325 aMtx.Line2.Column1 = aMtx.Line2.Column3 = aMtx.Line2.Column4 = 326 aMtx.Line3.Column1 = aMtx.Line3.Column2 = aMtx.Line3.Column4 = 327 aMtx.Line4.Column1 = aMtx.Line4.Column2 = aMtx.Line4.Column3 = 0.0; 328 329 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_TRANSF_MATRIX, aMtx ); 330 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_SCENE_DISTANCE, 4200 ); 331 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_SCENE_FOCAL_LENGTH, 8000 ); 332 333 // PROP_SCENE_SHADOW_SLANT; 334 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_SHADE_MODE, drawing::ShadeMode_SMOOTH ); 335 336 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 337 rOutMap, PROP_SCENE_AMBIENT_COLOR, ChartTypeHelper::getDefaultAmbientLightColor(ThreeDLookScheme_Simple,0)); 338 339 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_TWO_SIDED_LIGHTING, true ); 340 341 drawing::Position3D vrp( 0.0, 0.0, 1.0 ); 342 drawing::Direction3D vpn( 0.0, 0.0, 1.0 ); 343 drawing::Direction3D vup( 0.0, 1.0, 0.0 ); 344 drawing::CameraGeometry aDefaultCameraGeometry( vrp, vpn, vup ); 345 346 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_CAMERA_GEOMETRY, aDefaultCameraGeometry ); 347 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_PERSPECTIVE, drawing::ProjectionMode_PERSPECTIVE ); 348 349 // Light Sources 350 // ------------- 351 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_1, false ); 352 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_2, true ); 353 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_3, false ); 354 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_4, false ); 355 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_5, false ); 356 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_6, false ); 357 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_7, false ); 358 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_ON_8, false ); 359 360 uno::Any aDefaultLightDirection( uno::makeAny( drawing::Direction3D( 0.0, 0.0, 1.0 ) ) ); 361 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_1, aDefaultLightDirection ); 362 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_2, ChartTypeHelper::getDefaultSimpleLightDirection(0)); 363 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_3, aDefaultLightDirection ); 364 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_4, aDefaultLightDirection ); 365 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_5, aDefaultLightDirection ); 366 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_6, aDefaultLightDirection ); 367 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_7, aDefaultLightDirection ); 368 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_DIRECTION_8, aDefaultLightDirection ); 369 370 uno::Any aDefaultLightColor; 371 aDefaultLightColor <<= ChartTypeHelper::getDefaultDirectLightColor(ThreeDLookScheme_Simple,0); 372 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_1, aDefaultLightColor ); 373 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_2, aDefaultLightColor ); 374 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_3, aDefaultLightColor ); 375 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_4, aDefaultLightColor ); 376 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_5, aDefaultLightColor ); 377 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_6, aDefaultLightColor ); 378 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_7, aDefaultLightColor ); 379 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCENE_LIGHT_COLOR_8, aDefaultLightColor ); 380 } 381 382 } // namespace chart 383