#define DALI_SCENE3D_SCENE_VIEW_H
/*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
-// INTERNAL INCLUDES
-#include <dali-scene3d/public-api/api.h>
-#include <dali-scene3d/public-api/common/environment-map.h>
-
// EXTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/control.h>
#include <dali/public-api/actors/camera-actor.h>
#include <dali/public-api/common/dali-common.h>
+// INTERNAL INCLUDES
+#include <dali-scene3d/public-api/api.h>
+#include <dali-scene3d/public-api/common/environment-map.h>
+
namespace Dali
{
namespace Scene3D
*
* And since SceneView is a Control, it can be placed together with other 2D UI components in the DALi window.
*
+ * @note We support to render model well only if glsl version is higher than 300.
+ *
* @SINCE_2_1.38
* @code
*
{
public:
/**
+ * @brief The start and end property ranges for this control.
+ * @SINCE_2_3.1
+ */
+ enum PropertyRange
+ {
+ PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1,
+ PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000
+ };
+
+ struct Property
+ {
+ enum
+ {
+ /**
+ * @brief URL of a masking image
+ * @details Name "alphaMaskUrl", type Property::STRING, URL of image to apply as
+ * a mask after SceneView is drawn.
+ * @note Alpha masking is only available when framebuffer is used.
+ * @note Optional.
+ */
+ ALPHA_MASK_URL = PROPERTY_START_INDEX,
+
+ /**
+ * @brief The scale factor to apply to the content image before masking
+ * @details Name "maskContentScale", type Property::FLOAT, The scale factor
+ * to apply to the content before masking. Note, scaled result is cropped to
+ * the same size as the alpha mask.
+ * @note Optional.
+ */
+ MASK_CONTENT_SCALE,
+
+ /**
+ * @brief Whether to crop rendered result to mask or scale mask to fit result
+ * @details Name "cropToMask", type Property::BOOLEAN, True if the rendered result should
+ * be cropped to match the mask size, or false if the result should remain the same size.
+ * @note Optional, Default true
+ * @note If this is false, then the mask is scaled to fit the rendered result before being applied.
+ */
+ CROP_TO_MASK,
+ };
+ };
+
+public:
+ /**
* @brief Create an initialized SceneView.
*
* @SINCE_2_1.38
* @SINCE_2_1.38
* @param[in] rhs A reference to the moved handle
*/
- SceneView(SceneView&& rhs);
+ SceneView(SceneView&& rhs) noexcept;
/**
* @brief Assignment operator.
* @param[in] rhs A reference to the moved handle
* @return A reference to this
*/
- SceneView& operator=(SceneView&& rhs);
+ SceneView& operator=(SceneView&& rhs) noexcept;
/**
* @brief Downcasts an Object handle to SceneView.
* @brief Sets Scale Factor of Image Based Light Source.
*
* @SINCE_2_1.41
- * @note If SetImageBasedLightSource() or SetImageBasedLightTexture() method is called after this method, scaleFactor is overriden.
+ * @note If SetImageBasedLightSource() method is called after this method, scaleFactor is overriden.
* @note Default value is 1.0f.
*
* @param[in] scaleFactor scale factor that controls light source intensity in [0.0f, 1.0f].
float GetImageBasedLightScaleFactor() const;
/**
+ * @brief Gets Enabled Light Count of this SceneView
+ *
+ * @SINCE_2_2.32
+ * @return The number of enabled light count;
+ */
+ uint32_t GetActivatedLightCount() const;
+
+ /**
* @brief Sets whether to use FBO or not for the SceneView.
* If useFramebuffer is true, rendering result of SceneView is drawn on FBO and it is mapping on this SceneView plane.
* If useFramebuffer is false, each item in SceneView is rendered on window directly.
bool IsUsingFramebuffer() const;
/**
+ * @brief Sets SceneView's resolution manually.
+ * @note This manual resolution is only available when the SceneView uses FBO for rendering by using UseFrameBuffer(true).
+ * @note If the aspect ratio of input width/height is different with SceneView's aspect ratio, the rendered result is stretched to fill SceneView's area.
+ *
+ * @SINCE_2_3.2
+ * @param[in] width The input width.
+ * @param[in] height The input height.
+ */
+ void SetResolution(uint32_t width, uint32_t height);
+
+ /**
+ * @brief Retrieves width of resolution of the SceneView.
+ * @note If the SceneView not uses FBO, this method returns SceneView's width.
+ *
+ * @SINCE_2_3.2
+ * @return Width value of resolution of the SceneView.
+ */
+ uint32_t GetResolutionWidth();
+
+ /**
+ * @brief Retrieves height of resolution of the SceneView.
+ * @note If the SceneView not uses FBO, this method returns SceneView's height.
+ *
+ * @SINCE_2_3.2
+ * @return Height value of resolution of the SceneView.
+ */
+ uint32_t GetResolutionHeight();
+
+ /**
+ * @brief Resets SceneView's resolution to the current size of SceneView.
+ *
+ * @SINCE_2_3.2
+ */
+ void ResetResolution();
+
+ /**
* @brief Sets Multisampling level when we use Framebuffer.
* Default is 0.
*