#import <UIKit/UIKit.h> #include "SkCanvas.h" #include "SkGraphics.h" #import "SkEventNotifier.h" #include "SkOSMenu.h" #include "SkTime.h" #include "SkTypes.h" #import "SkUIView.h" #include "SkWindow.h" #define kINVAL_UIVIEW_EventType "inval-uiview" SkOSWindow::SkOSWindow(void* hWnd) : fHWND(hWnd) { fInvalEventIsPending = false; fNotifier = [[SkEventNotifier alloc] init]; } SkOSWindow::~SkOSWindow() { [(SkEventNotifier*)fNotifier release]; } void SkOSWindow::onHandleInval(const SkIRect& r) { if (!fInvalEventIsPending) { fInvalEventIsPending = true; (new SkEvent(kINVAL_UIVIEW_EventType, this->getSinkID()))->post(); } } bool SkOSWindow::onEvent(const SkEvent& evt) { if (evt.isType(kINVAL_UIVIEW_EventType)) { fInvalEventIsPending = false; const SkIRect& r = this->getDirtyBounds(); [(SkUIView*)fHWND postInvalWithRect:&r]; return true; } if ([(SkUIView*)fHWND onHandleEvent:evt]) { return true; } return this->INHERITED::onEvent(evt); } void SkOSWindow::onSetTitle(const char title[]) { [(SkUIView*)fHWND setSkTitle:title]; } void SkOSWindow::onAddMenu(const SkOSMenu* menu) { [(SkUIView*)fHWND onAddMenu:menu]; } void SkOSWindow::onUpdateMenu(SkOSMenu* menu) { [(SkUIView*)fHWND onUpdateMenu:menu]; } bool SkOSWindow::attach(SkBackEndTypes /* attachType */, int /* msaaSampleCount */, AttachmentInfo* info) { [(SkUIView*)fHWND getAttachmentInfo:info]; bool success = true; return success; } void SkOSWindow::detach() {} void SkOSWindow::present() { }