Conversion to Apache 2.0 license
[platform/core/uifw/dali-toolkit.git] / optional / dali-toolkit / public-api / controls / magnifier / magnifier.h
1 #ifndef __DALI_TOOLKIT_MAGNIFIER_H__
2 #define __DALI_TOOLKIT_MAGNIFIER_H__
3
4 /*
5  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22
23 // INTERNAL INCLUDES
24 #include <dali-toolkit/public-api/controls/control.h>
25
26 namespace Dali DALI_IMPORT_API
27 {
28
29 namespace Toolkit
30 {
31
32 namespace Internal DALI_INTERNAL
33 {
34 class Magnifier;
35 }
36
37 /**
38  * Magnifier control is used to apply a magnify effect to content on the stage.
39  *
40  * This is done by rendering the contents of a SourceActor at a given source position
41  * to the stage as a separate overlay. In addition to the contents, an optional frame
42  * is displayed around the magnified contents.
43  */
44 class Magnifier : public Control
45 {
46 public:
47
48   // Custom properties
49
50   static const std::string SOURCE_POSITION_PROPERTY_NAME;                   ///< Property, name "source-position",              type VECTOR3
51
52 public:
53
54   /**
55    * Creates an empty Magnifier handle
56    */
57   Magnifier();
58
59   /**
60    * Copy constructor. Creates another handle that points to the same real object
61    * @param handle to copy from
62    */
63   Magnifier( const Magnifier& handle );
64
65   /**
66    * Assignment operator. Changes this handle to point to another real object
67    */
68   Magnifier& operator=( const Magnifier& handle );
69
70   /**
71    * Virtual destructor.
72    * Dali::Object derived classes typically do not contain member data.
73    */
74   virtual ~Magnifier();
75
76   /**
77    * Create the Poup control
78    * @return A handle to the Magnifier control.
79    */
80   static Magnifier New();
81
82   /**
83    * Downcast an Object handle to Magnifier. If handle points to an Magnifier the
84    * downcast produces valid handle. If not the returned handle is left uninitialized.
85    * @param[in] handle Handle to an object
86    * @return handle to a Magnifier or an uninitialized handle
87    */
88   static Magnifier DownCast( BaseHandle handle );
89
90 public:
91
92   /**
93    * Set the actors to be rendered in magnifier.
94    * @param[in] actor This actor and its children will be rendered.
95    */
96   void SetSourceActor(Actor actor);
97
98   /**
99    * Set the source camera position to render in magnifier
100    * @param[in] position The target position from which to render source.
101    */
102   void SetSourcePosition(Vector3 position);
103
104   /**
105    * Returns whether the frame is visible or not.
106    * @return true if frame is visible, false if not.
107    */
108   bool GetFrameVisibility() const;
109
110   /**
111    * Sets whether the frame part of the magnifier should be visible
112    * or not.
113    * @param[in] visible true to display frame, false to hide frame.
114    */
115   void SetFrameVisibility(bool visible);
116
117   /**
118    * Get the magnification factor of the magnifier
119    * The larger the value the larger the contents magnified.
120    * A value of 1.0f indications 1x magnification.
121    * @return Magnification factor is returned
122    */
123   float GetMagnificationFactor() const;
124
125   /**
126    * Set the magnification factor of the magnifier
127    * The larger the value the larger the contents magnified.
128    * A value of 1.0f indications 1x magnification.
129    * @param[in] value Magnification factor.
130    */
131   void SetMagnificationFactor(float value);
132
133 public: // Not intended for application developers
134
135   /**
136    * Creates a handle using the Toolkit::Internal implementation.
137    * @param[in]  implementation  The Control implementation.
138    */
139   DALI_INTERNAL Magnifier(Internal::Magnifier& implementation);
140
141   /**
142    * Allows the creation of this Control from an Internal::CustomActor pointer.
143    * @param[in]  internal  A pointer to the internal CustomActor.
144    */
145   DALI_INTERNAL Magnifier(Dali::Internal::CustomActor* internal);
146 };
147
148 } // namespace Toolkit
149
150 } // namespace Dali
151
152 #endif // __DALI_TOOLKIT_MAGNIFIER_H__