00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef AWWEBVIEW_H
00015 #define AWWEBVIEW_H
00016
00017 #include "pandabase.h"
00018 #include "typedReferenceCount.h"
00019 #include "luse.h"
00020
00021 #include "awesomium_includes.h"
00022
00023 class WebViewListener;
00024
00025
00026
00027
00028
00029 class EXPCL_PANDAAWESOMIUM AwWebView : public TypedReferenceCount{
00030 PUBLISHED:
00031
00032
00033
00034
00035
00036 enum MouseButton {
00037 LEFT_MOUSE_BTN,
00038 MIDDLE_MOUSE_BTN,
00039 RIGHT_MOUSE_BTN
00040 };
00041
00042
00043
00044
00045 struct Rect {
00046 int x, y, width, height;
00047
00048 Rect();
00049 Rect(int x, int y, int width, int height);
00050 bool isEmpty() const;
00051 };
00052
00053
00054 PUBLISHED:
00055 AwWebView(Awesomium::WebView * webView);
00056
00057 virtual ~AwWebView();
00058
00059 INLINE void destroy(void);
00060
00061 INLINE void setListener(Awesomium::WebViewListener * listener);
00062
00063 INLINE Awesomium::WebViewListener* getListener();
00064
00065
00066 void loadURL2(const string& url, const string& frameName ="", const string& username="" , const string& password="");
00067
00068
00069 void loadHTML2(const std::string& html, const std::string& frameName = "");
00070
00071
00072 void loadFile2(const std::string& file, const std::string& frameName = "" );
00073
00074 INLINE void goToHistoryOffset(int offset);
00075
00076
00077 INLINE void executeJavascript2(const std::string& javascript, const std::string& frameName = "" );
00078
00079 INLINE Awesomium::FutureJSValue executeJavascriptWithResult2(const std::string& javascript, const std::string& frameName = "");
00080
00081 INLINE void setProperty(const std::string& name, const Awesomium::JSValue& value);
00082
00083 INLINE void setCallback(const std::string& name);
00084
00085 INLINE bool isDirty();
00086
00087 INLINE void render(size_t destination, int destRowSpan, int destDepth);
00088
00089 void render(size_t destination, int destRowSpan, int destDepth, AwWebView::Rect * renderedRect);
00090
00091 void injectMouseMove(int x, int y);
00092
00093 void injectMouseDown(AwWebView::MouseButton button);
00094
00095 INLINE void injectMouseUp(AwWebView::MouseButton button);
00096
00097 INLINE void injectMouseWheelXY(int scrollAmountX, int scrollAmountY);
00098
00099 INLINE void injectMouseWheel(int scrollAmountY) {
00100 injectMouseWheelXY(0, scrollAmountY);
00101 }
00102
00103 INLINE void injectKeyEvent(bool press, int modifiers, int windowsCode, int nativeCode=0);
00104
00105 private:
00106 Awesomium::WebView * _myWebView;
00107
00108 public:
00109 static TypeHandle get_class_type() {
00110 return _type_handle;
00111 }
00112 static void init_type() {
00113 TypedReferenceCount::init_type();
00114 register_type(_type_handle, "AwWebView",
00115 TypedReferenceCount::get_class_type());
00116 }
00117 virtual TypeHandle get_type() const {
00118 return get_class_type();
00119 }
00120 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
00121
00122 private:
00123 static TypeHandle _type_handle;
00124 };
00125
00126 #include "awWebView.I"
00127
00128 #endif