| Index: experimental/SkV8Example/SkV8Example.cpp | 
| =================================================================== | 
| --- experimental/SkV8Example/SkV8Example.cpp	(revision 0) | 
| +++ experimental/SkV8Example/SkV8Example.cpp	(revision 0) | 
| @@ -0,0 +1,108 @@ | 
| +/* | 
| + * Copyright 2013 Google Inc. | 
| + * | 
| + * | 
| + * Use of this source code is governed by a BSD-style license that can be | 
| + * found in the LICENSE file. | 
| + * | 
| + */ | 
| +#include <v8.h> | 
| + | 
| +using namespace v8; | 
| + | 
| +#include "SkV8Example.h" | 
| + | 
| +#include "gl/GrGLUtil.h" | 
| +#include "gl/GrGLDefines.h" | 
| +#include "gl/GrGLInterface.h" | 
| +#include "SkApplication.h" | 
| +#include "SkDraw.h" | 
| +#include "SkGpuDevice.h" | 
| +#include "SkGraphics.h" | 
| + | 
| + | 
| +void application_init() { | 
| +    SkGraphics::Init(); | 
| +    SkEvent::Init(); | 
| +} | 
| + | 
| +void application_term() { | 
| +    SkEvent::Term(); | 
| +    SkGraphics::Term(); | 
| +} | 
| + | 
| +SkV8ExampleWindow::SkV8ExampleWindow(void* hwnd) | 
| +    : INHERITED(hwnd) { | 
| + | 
| +    this->setConfig(SkBitmap::kARGB_8888_Config); | 
| +    this->setVisibleP(true); | 
| +    this->setClipToBounds(false); | 
| +} | 
| + | 
| + | 
| +void SkV8ExampleWindow::onDraw(SkCanvas* canvas) { | 
| +  printf("Draw\n"); | 
| + | 
| +  canvas->drawColor(SK_ColorWHITE); | 
| +  SkPaint paint; | 
| +  paint.setColor(SK_ColorRED); | 
| + | 
| +  // Draw a rectangle with blue paint | 
| +  SkRect rect = { | 
| +    SkIntToScalar(10), SkIntToScalar(10), | 
| +    SkIntToScalar(128), SkIntToScalar(128) | 
| +  }; | 
| +  canvas->drawRect(rect, paint); | 
| + | 
| +  INHERITED::onDraw(canvas); | 
| +} | 
| + | 
| +#ifdef SK_BUILD_FOR_WIN | 
| +void SkV8ExampleWindow::onHandleInval(const SkIRect& rect) { | 
| +    RECT winRect; | 
| +    winRect.top = rect.top(); | 
| +    winRect.bottom = rect.bottom(); | 
| +    winRect.right = rect.right(); | 
| +    winRect.left = rect.left(); | 
| +    InvalidateRect((HWND)this->getHWND(), &winRect, false); | 
| +} | 
| +#endif | 
| + | 
| + | 
| +SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) { | 
| +  printf("Started\n"); | 
| + | 
| +  // Get the default Isolate created at startup. | 
| +  Isolate* isolate = Isolate::GetCurrent(); | 
| + | 
| +  // Create a stack-allocated handle scope. | 
| +  HandleScope handle_scope(isolate); | 
| + | 
| +  // Create a new context. | 
| +  Handle<Context> context = Context::New(isolate); | 
| + | 
| +  // Here's how you could create a Persistent handle to the context, if needed. | 
| +  Persistent<Context> persistent_context(isolate, context); | 
| + | 
| +  // Enter the created context for compiling and | 
| +  // running the hello world script. | 
| +  Context::Scope context_scope(context); | 
| + | 
| +  // Create a string containing the JavaScript source code. | 
| +  Handle<String> source = String::New("'Hello' + ', World!'"); | 
| + | 
| +  // Compile the source code. | 
| +  Handle<Script> script = Script::Compile(source); | 
| + | 
| +  // Run the script to get the result. | 
| +  Handle<Value> result = script->Run(); | 
| + | 
| +  // The persistent handle needs to be eventually disposed. | 
| +  persistent_context.Dispose(); | 
| + | 
| +  // Convert the result to an ASCII string and print it. | 
| +  String::AsciiValue ascii(result); | 
| +  printf("%s\n", *ascii); | 
| + | 
| +    return new SkV8ExampleWindow(hwnd); | 
| +} | 
|  |