[3.0] Remove/move experimental features
[platform/core/uifw/dali-core.git] / dali / internal / event / images / nine-patch-image-impl.h
index 1c81e2e..3508821 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 // INTERNAL INCLUDES
-#include <dali/public-api/images/nine-patch-image.h>
+#include <dali/devel-api/images/nine-patch-image.h>
 #include <dali/internal/event/images/resource-image-impl.h>
 #include <dali/internal/event/images/buffer-image-impl.h>
 
@@ -48,30 +48,25 @@ class UpdateManager;
 class NinePatchImage : public ResourceImage
 {
 public:
+  typedef Dali::Vector< Uint16Pair > StretchRanges;
+
+public:
 
   /**
    * Create a new NinePatchImage.
    * Also a pixel buffer for image data is allocated.
    * Dali has ownership of the buffer.
    * @param [in] filename    File to load synchronously into buffer
-   * @param [in] attributes  Image attributes of the file
-   * @param [in] releasePol  optionally relase memory when image is not visible on screen (default: keep image data until Image object is alive).
    */
-  static NinePatchImagePtr New( const std::string& filename,
-                                const ImageAttributes& attributes,
-                                ReleasePolicy releasePol = IMAGE_RELEASE_POLICY_DEFAULT );
+  static NinePatchImagePtr New( const std::string& filename );
 
   /**
    * Create a new NinePatchImage
    * For better performance and portability use power of two dimensions.
    * The maximum size of the image is limited by GL_MAX_TEXTURE_SIZE.
    * @param [in] filename    File to load synchronously into buffer
-   * @param [in] attributes  Image attributes of the file
-   * @param [in] releasePol  optionally relase memory when image is not visible on screen (default: keep image data until Image object is alive).
    */
-  NinePatchImage( const std::string& filename,
-                  const ImageAttributes& attributes,
-                  ReleasePolicy releasePol = IMAGE_RELEASE_POLICY_DEFAULT );
+  NinePatchImage( const std::string& filename );
 
   /**
    * Convert Image object to a 9 patch image object if possible.
@@ -90,10 +85,14 @@ protected:
 
 public:
   /**
-   * Get the stretch borders
-   * @return The border in pixels from the left, top, right, and bottom of the image respectively.
+   * @copydoc Dali::NinePatchImage::GetStretchPixelsX
+   */
+  const StretchRanges& GetStretchPixelsX();
+
+  /**
+   * @copydoc Dali::NinePatchImage::GetStretchPixelsY
    */
-  Vector4 GetStretchBorders();
+  const StretchRanges& GetStretchPixelsY();
 
   /**
    * Get the child rectangle
@@ -109,6 +108,12 @@ public:
    */
   BufferImagePtr CreateCroppedBufferImage();
 
+  /**
+   *
+   * @copydoc Dali::NinePatchImage::
+   */
+  static bool IsNinePatchUrl( const std::string& url );
+
 
 protected: // From Resource
   /**
@@ -128,10 +133,13 @@ private:
    */
   void ParseBorders();
 
+  Uint16Pair ParseRange( unsigned int& index, unsigned int width, const PixelBuffer* & pixel, unsigned int pixelStride, int testByte, int testBits, int testValue );
+
 private:
   ResourceClient*               mResourceClient;
   Integration::BitmapPtr        mBitmap;
-  Vector4                       mStretchBorders;
+  StretchRanges                 mStretchPixelsX;  //< The horizontal stretchable pixels in the cropped image space
+  StretchRanges                 mStretchPixelsY;  //< The vertical stretchable pixels in the cropped image space
   Rect<int>                     mChildRectangle;
   bool                          mParsedBorder;
 };