[Tizen][WebRTC] Appsink implementation with fimcconvert
[platform/framework/web/chromium-efl.git] / tizen_src / impl / EdgeEffect.h
1 // Copyright 2013 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef EdgeEffect_h
6 #define EdgeEffect_h
7
8 #ifdef TIZEN_EDGE_EFFECT
9 #include <string>
10 #include <Evas.h>
11 #include "base/memory/ref_counted.h"
12
13 #define EDGE_EDJE_FILE EDJE_DIR"/Edge.edj"
14 #define EDJE_EFFECT_GROUP "edge_effect"
15
16 class EdgeEffect : public base::RefCounted<EdgeEffect> {
17  public:
18   static scoped_refptr<EdgeEffect> create(Evas_Object* view)
19   {
20     return make_scoped_refptr(new EdgeEffect(view));
21   }
22   ~EdgeEffect();
23
24   void show(const std::string& source);
25   void hide(const std::string& source);
26   void hide();
27   void enable() { enabled = true; }
28   void disable();
29
30   static void viewResizeCallback(void* data, Evas*, Evas_Object*, void* eventInfo);
31   static void viewMoveCallback(void* data, Evas*, Evas_Object*, void* eventInfo);
32   static void viewShowCallback(void* data, Evas*, Evas_Object*, void* eventInfo);
33   static void viewHideCallback(void* data, Evas*, Evas_Object*, void* eventInfo);
34   static void setSettingsEnabled(bool enable) { m_settingsEnable = enable; };
35
36  private:
37   EdgeEffect(Evas_Object* view);
38
39   Evas_Object* ensureEdgeObject();
40   void resizeObject(int width, int height);
41   void moveObject(int x, int y);
42   void showObject();
43   void hideObject();
44   bool enabled;
45
46   Evas_Object* m_view;
47   Evas_Object* m_edgeObject;
48   static bool m_settingsEnable;
49 };
50
51 #endif // TIZEN_EDGE_EFFECT
52
53 #endif // EdgeEffect_h