*
*/
-/**
- * @addtogroup dali_adaptor_framework
- * @{
- */
-
// EXTERNAL INCLUDES
-#include <dali/public-api/signals/dali-signal.h>
#include <dali/public-api/object/any.h>
+#include <dali/public-api/object/base-handle.h>
+#include <dali/public-api/signals/dali-signal.h>
namespace Dali
{
+/**
+ * @addtogroup dali_adaptor_framework
+ * @{
+ */
class OffscreenWindow;
/**
* @brief Appliations can draw UI on offscreen surface with the OffscreenApplication.
- * When you use a OffscreenApplication, you don't have to make a Window.
+ * When you use a OffscreenApplication, you don't have to create a Window.
*/
class DALI_IMPORT_API OffscreenApplication : public Dali::BaseHandle
{
public:
+ using OffscreenApplicationSignalType = Signal<void(void)>;
- typedef Signal<void (void)> OffscreenApplicationSignalType;
+ /**
+ * @brief Enumeration for the render mode
+ */
+ enum class RenderMode
+ {
+ AUTO, // Scene is rendered automatically
+ MANUAL // Scene is rendered by RenderOnce()
+ };
public:
-
/**
* @brief This is the constructor of OffscreenApplication
*
* @param[in] width The initial width of the default OffscreenWindow
* @param[in] height The initial height of the default OffscreenWindow
* @param[in] isTranslucent Whether the OffscreenWindow is translucent or not
+ * @param[in] renderMode The RenderMode of the OffscreenApplication
*/
- static OffscreenApplication New( uint16_t width, uint16_t height, bool isTranslucent );
+ static OffscreenApplication New(uint16_t width, uint16_t height, bool isTranslucent, RenderMode renderMode = RenderMode::AUTO);
/**
* @brief This is the constructor of OffscreenApplication
*
* @param[in] surface The native surface handle to create the OffscreenWindow
* @param[in] isTranslucent Whether the OffscreenWindow is translucent or not
+ * @param[in] renderMode The RenderMode of the OffscreenApplication
*/
- static OffscreenApplication New( Dali::Any surface, bool isTranslucent );
+ static OffscreenApplication New(Dali::Any surface, bool isTranslucent, RenderMode renderMode = RenderMode::AUTO);
/**
* @brief Constructs an empty handle
*/
- OffscreenApplication();
+ OffscreenApplication();
/**
* @brief Copy constructor
+ *
+ * @param [in] offscreenApplication A reference to the copied handle
*/
- OffscreenApplication( const OffscreenApplication& offscreenApplication );
+ OffscreenApplication(const OffscreenApplication& offscreenApplication);
/**
* @brief Assignment operator
+ *
+ * @param [in] offscreenApplication A reference to the copied handle
+ * @return A reference to this
*/
- OffscreenApplication& operator=( const OffscreenApplication& offscreenApplication );
+ OffscreenApplication& operator=(const OffscreenApplication& offscreenApplication);
/**
* @brief Destructor
*/
- ~OffscreenApplication();
+ ~OffscreenApplication();
public:
-
/**
- * @brief Runs the OffscreenApplication (rendering, event handling, etc)
+ * @brief Starts the OffscreenApplication (rendering, event handling, etc)
*/
- void Run();
+ void Start();
/**
* @brief Stops the OffscreenApplication
*/
void Stop();
-
/**
- * @brief Get the default Window handle
- * @return The default Window
+ * @brief Get the default OffscreenWindow handle
+ * @return The default OffscreenWindow
*/
OffscreenWindow GetWindow();
-public: // Signals
-
/**
+ * @brief Renders once more even if we're paused
+ */
+ void RenderOnce();
+
+public: // Signals
+ /**
* @brief Signal to notify the client when the application is ready to be initialized
*
- * @note OffscreenApplication::Run() should be called to be initialized
+ * @note OffscreenApplication::Start() should be called to be initialized
*
* @return The signal
*/
- OffscreenApplicationSignalType& InitSignal();
+ OffscreenApplicationSignalType& InitSignal();
/**
* @brief Signal to notify the user when the application is about to be terminated
*
* @return The signal
*/
- OffscreenApplicationSignalType& TerminateSignal();
+ OffscreenApplicationSignalType& TerminateSignal();
public: // Not intended for application developers
/**
* @brief Internal constructor
*/
- explicit DALI_INTERNAL OffscreenApplication( Internal::OffscreenApplication* offscreenApplication );
-
+ explicit DALI_INTERNAL OffscreenApplication(Internal::OffscreenApplication* offscreenApplication);
};
/**
* @}
*/
-} // namespace Dali
+} // namespace Dali
#endif // DALI_OFFSCREEN_APPLICATION_H