Conversion to Apache 2.0 license
[platform/core/uifw/dali-toolkit.git] / capi / dali-toolkit / public-api / controls / control.h
index f588a2c..6fcc7a1 100644 (file)
@@ -1,21 +1,22 @@
 #ifndef __DALI_TOOLKIT_CONTROL_H__
 #define __DALI_TOOLKIT_CONTROL_H__
 
-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://floralicense.org/license/
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
+/*
+ * Copyright (c) 2014 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
 
 /**
  * @addtogroup CAPI_DALI_TOOLKIT_CONTROLS_MODULE
@@ -33,23 +34,41 @@ namespace Toolkit
 
 //Forward declarations.
 
-class ControlImpl;
+namespace Internal
+{
+class Control;
+}
 
 /**
  * @brief Control is the base class for all controls.
  *
- * The implementation of the control must be supplied; see ControlImpl for more details.
- * @see ControlImpl
+ * The implementation of the control must be supplied; see Internal::Control for more details.
+ * @see Internal::Control
  */
 class Control : public CustomActor, public ConnectionTrackerInterface
 {
 public:
 
-  // Action Names
-  static const char* const ACTION_CONTROL_ACTIVATED; ///< name "control-activated"
-
-  // Signal Names
-  static const char* const SIGNAL_KEY_EVENT;         ///< name "key-event"
+  /// @name Properties
+  /** @{ */
+  static const Property::Index PROPERTY_BACKGROUND_COLOR;    ///< name "background-color",        @see SetBackgroundColor,        type VECTOR4
+  static const Property::Index PROPERTY_BACKGROUND;          ///< name "background",              @see SetBackground,             type MAP
+  static const Property::Index PROPERTY_WIDTH_POLICY;        ///< name "width-policy",            @see SetSizePolicy,             type STRING
+  static const Property::Index PROPERTY_HEIGHT_POLICY;       ///< name "height-policy",           @see SetSizePolicy,             type STRING
+  static const Property::Index PROPERTY_MINIMUM_SIZE;        ///< name "minimum-size",            @see SetMinimumSize,            type VECTOR3
+  static const Property::Index PROPERTY_MAXIMUM_SIZE;        ///< name "maximum-size",            @see SetMaximumSize,            type VECTOR3
+  static const Property::Index PROPERTY_KEY_INPUT_FOCUS;     ///< name "key-input-focus",         @see SetKeyInputFocus,          type BOOLEAN
+  /** @} */
+
+  /// @name Signals
+  /** @{ */
+  static const char* const SIGNAL_KEY_EVENT;                 ///< name "key-event"
+  /** @} */
+
+  /// @name Actions
+  /** @{ */
+  static const char* const ACTION_CONTROL_ACTIVATED;         ///< name "control-activated"
+  /** @} */
 
   /**
    * @brief Describes how a control could be resized.
@@ -150,14 +169,16 @@ public:
    *
    * @return The implementation.
    */
-  ControlImpl& GetImplementation();
+  Internal::Control& GetImplementation();
 
   /**
    * @brief Retrieve the Control implementation.
    *
    * @return The implementation.
    */
-  const ControlImpl& GetImplementation() const;
+  const Internal::Control& GetImplementation() const;
+
+  // Size Negotiation
 
   /**
    * @brief Sets the size policies for the width and height dimensions.
@@ -230,6 +251,8 @@ public:
    */
   float GetWidthForHeight( float height );
 
+  // Key Input
+
   /**
    * @brief This sets the control to receive key events.
    *
@@ -262,8 +285,78 @@ public:
    */
   void ClearKeyInputFocus();
 
-//signals
-public:
+  // Gesture Detection
+
+  /**
+   * @brief Retrieves the pinch gesture detector of the control.
+   *
+   * @return The pinch gesture detector.
+   * @pre Pinch detection should have been enabled in the control.
+   */
+  PinchGestureDetector GetPinchGestureDetector() const;
+
+  /**
+   * @brief Retrieves the pan gesture detector of the control.
+   *
+   * @return The pan gesture detector.
+   * @pre Pan detection should have been enabled in the control.
+   */
+  PanGestureDetector GetPanGestureDetector() const;
+
+  /**
+   * @brief Retrieves the tap gesture detector of the control.
+   *
+   * @return The tap gesture detector.
+   * @pre Tap detection should have been enabled in the control.
+   */
+  TapGestureDetector GetTapGestureDetector() const;
+
+  /**
+   * @brief Retrieves the long press gesture detector of the control.
+   *
+   * @return The long press gesture detector.
+   * @pre Long press detection should have been enabled in the control.
+   */
+  LongPressGestureDetector GetLongPressGestureDetector() const;
+
+  // Background
+
+  /**
+   * @brief Sets the background color of the control.
+   *
+   * @param[in] color The required background color of the control
+   */
+  void SetBackgroundColor( const Vector4& color );
+
+  /**
+   * @brief Retrieves the background color of the control.
+   *
+   * @return The background color of the control.
+   */
+  Vector4 GetBackgroundColor() const;
+
+  /**
+   * @brief Sets an image as the background of the control.
+   *
+   * The color of this image is blended with the background color @see SetBackgroundColor
+   *
+   * @param[in] image The image to set as the background.
+   */
+  void SetBackground( Image image );
+
+  /**
+   * @brief Clears the background.
+   */
+  void ClearBackground();
+
+  /**
+   * @brief Retrieves the actor used as the background for this control.
+   *
+   * @return The actor that used as the background for this control.
+   */
+  Actor GetBackgroundActor() const;
+
+  // Signals
 
   /**
    * @brief This signal is emitted when key event is received.
@@ -304,7 +397,7 @@ public: // Not intended for application developers
    * @param[in] implementation The implementation for this control.
    * @return A handle to a newly allocated Dali resource.
    */
-  Control(ControlImpl& implementation);
+  Control(Internal::Control& implementation);
 
   /**
    * @brief This constructor is used by CustomActor within Dali core to create additional Control handles