27accef223
Review URL: https://codereview.appspot.com/5576043 git-svn-id: http://skia.googlecode.com/svn/trunk@3087 2bbb7eff-a529-9590-31e7-b0007b416f81
177 lines
4.3 KiB
C++
177 lines
4.3 KiB
C++
/*
|
|
* EdgeApp.cpp
|
|
* edge
|
|
*
|
|
* Created by Cary Clark on 7/6/11.
|
|
* Copyright 2011 __MyCompanyName__. All rights reserved.
|
|
*
|
|
*/
|
|
|
|
#include "SkCanvas.h"
|
|
#include "SkDevice.h"
|
|
#include "SkGraphics.h"
|
|
#include "SkImageEncoder.h"
|
|
#include "SkPaint.h"
|
|
#include "SkPicture.h"
|
|
#include "SkStream.h"
|
|
#include "SkTime.h"
|
|
#include "SkWindow.h"
|
|
|
|
#include "SkTouchGesture.h"
|
|
#include "SkTypeface.h"
|
|
|
|
#include "Intersection_Tests.h"
|
|
|
|
extern void CreateSweep(SkBitmap* , float width);
|
|
extern void CreateHorz(SkBitmap* );
|
|
extern void CreateVert(SkBitmap* );
|
|
extern void CreateAngle(SkBitmap* sweep, float angle);
|
|
extern void SkAntiEdge_Test();
|
|
|
|
|
|
static const char gCharEvtName[] = "Char_Event";
|
|
static const char gKeyEvtName[] = "Key_Event";
|
|
|
|
class SkEdgeView : public SkView {
|
|
public:
|
|
SkEdgeView() {
|
|
CreateSweep(&fSweep_1_0, 1);
|
|
CreateSweep(&fSweep_1_2, 1.2f);
|
|
CreateSweep(&fSweep_1_4, 1.4f);
|
|
CreateSweep(&fSweep_1_6, 1.6f);
|
|
CreateHorz(&fBitmapH);
|
|
CreateVert(&fBitmapV);
|
|
CreateAngle(&fAngle_12, 12);
|
|
CreateAngle(&fAngle_45, 45);
|
|
}
|
|
virtual ~SkEdgeView() {}
|
|
|
|
protected:
|
|
virtual void onDraw(SkCanvas* canvas) {
|
|
canvas->drawColor(SK_ColorWHITE);
|
|
canvas->drawBitmap(fSweep_1_0, 0, 10);
|
|
canvas->drawBitmap(fBitmapH, 110, 10);
|
|
canvas->drawBitmap(fBitmapV, 220, 10);
|
|
canvas->drawBitmap(fSweep_1_2, 0, 110);
|
|
canvas->drawBitmap(fSweep_1_4, 100, 110);
|
|
canvas->drawBitmap(fSweep_1_6, 200, 110);
|
|
canvas->drawBitmap(fAngle_12, 0, 200);
|
|
canvas->drawBitmap(fAngle_45, 124, 220);
|
|
}
|
|
|
|
private:
|
|
SkBitmap fSweep_1_0;
|
|
SkBitmap fSweep_1_2;
|
|
SkBitmap fSweep_1_4;
|
|
SkBitmap fSweep_1_6;
|
|
SkBitmap fBitmapH;
|
|
SkBitmap fBitmapV;
|
|
SkBitmap fAngle_12;
|
|
SkBitmap fAngle_45;
|
|
typedef SkView INHERITED;
|
|
};
|
|
|
|
class EdgeWindow : public SkOSWindow {
|
|
public:
|
|
EdgeWindow(void* hwnd) : INHERITED(hwnd) {
|
|
this->setConfig(SkBitmap::kARGB_8888_Config);
|
|
this->setVisibleP(true);
|
|
fView.setVisibleP(true);
|
|
fView.setClipToBounds(false);
|
|
this->attachChildToFront(&fView)->unref();
|
|
}
|
|
virtual ~EdgeWindow() {}
|
|
|
|
virtual void draw(SkCanvas* canvas){
|
|
this->INHERITED::draw(canvas);
|
|
}
|
|
|
|
|
|
protected:
|
|
SkEdgeView fView;
|
|
|
|
virtual void onDraw(SkCanvas* canvas) {
|
|
}
|
|
|
|
virtual bool onHandleKey(SkKey key) {
|
|
SkEvent evt(gKeyEvtName);
|
|
evt.setFast32(key);
|
|
if (fView.doQuery(&evt)) {
|
|
return true;
|
|
}
|
|
return this->INHERITED::onHandleKey(key);
|
|
}
|
|
|
|
virtual bool onHandleChar(SkUnichar uni) {
|
|
SkEvent evt(gCharEvtName);
|
|
evt.setFast32(uni);
|
|
if (fView.doQuery(&evt)) {
|
|
return true;
|
|
}
|
|
return this->INHERITED::onHandleChar(uni);
|
|
}
|
|
|
|
virtual void onSizeChange() {
|
|
fView.setSize(this->width(), this->height());
|
|
this->INHERITED::onSizeChange();
|
|
}
|
|
|
|
virtual SkCanvas* beforeChildren(SkCanvas* canvas) {
|
|
return this->INHERITED::beforeChildren(canvas);
|
|
}
|
|
|
|
virtual void afterChildren(SkCanvas*) {}
|
|
virtual void beforeChild(SkView* child, SkCanvas* canvas) {}
|
|
virtual void afterChild(SkView* child, SkCanvas* canvas) {}
|
|
|
|
virtual bool onEvent(const SkEvent& evt) {
|
|
return this->INHERITED::onEvent(evt);
|
|
}
|
|
|
|
virtual bool onQuery(SkEvent* evt) {
|
|
return this->INHERITED::onQuery(evt);
|
|
}
|
|
|
|
virtual bool onDispatchClick(int x, int y, Click::State state, void* owner) {
|
|
int w = SkScalarRound(this->width());
|
|
int h = SkScalarRound(this->height());
|
|
// check for the resize-box
|
|
if (w - x < 16 && h - y < 16) {
|
|
return false; // let the OS handle the click
|
|
} else {
|
|
return this->INHERITED::onDispatchClick(x, y, state, owner);
|
|
}
|
|
}
|
|
|
|
virtual bool onClick(Click* click) {
|
|
return false;
|
|
}
|
|
|
|
virtual Click* onFindClickHandler(SkScalar x, SkScalar y) {
|
|
return 0;
|
|
}
|
|
|
|
typedef SkOSWindow INHERITED;
|
|
};
|
|
|
|
|
|
#include "SkApplication.h"
|
|
|
|
SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) {
|
|
return new EdgeWindow(hwnd);
|
|
}
|
|
|
|
void application_init() {
|
|
SkGraphics::Init();
|
|
SkEvent::Init();
|
|
|
|
Intersection_Tests();
|
|
SkAntiEdge_Test();
|
|
}
|
|
|
|
void application_term() {
|
|
SkEvent::Term();
|
|
SkGraphics::Term();
|
|
}
|
|
|