Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(448)

Side by Side Diff: core/cross/cairo/renderer_cairo.h

Issue 2825074: Initial version rendering 2D path for O3D. This will eventually allow O3D app... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/o3d/
Patch Set: '' Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « core/cross/cairo/image_2d.cc ('k') | core/cross/cairo/renderer_cairo.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2010, Google Inc. 2 * Copyright 2010, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 24 matching lines...) Expand all
35 #define O3D_CORE_CROSS_CAIRO_RENDERER_CAIRO_H_ 35 #define O3D_CORE_CROSS_CAIRO_RENDERER_CAIRO_H_
36 36
37 #include <cairo.h> 37 #include <cairo.h>
38 #include <build/build_config.h> 38 #include <build/build_config.h>
39 #include <vector> 39 #include <vector>
40 #include "core/cross/renderer_platform.h" 40 #include "core/cross/renderer_platform.h"
41 #include "core/cross/renderer.h" 41 #include "core/cross/renderer.h"
42 42
43 namespace o3d { 43 namespace o3d {
44 44
45 class Image2D;
46
45 class RendererCairo : public Renderer { 47 class RendererCairo : public Renderer {
46 public: 48 public:
47 static RendererCairo* CreateDefault(ServiceLocator* service_locator); 49 static RendererCairo* CreateDefault(ServiceLocator* service_locator);
48 50
49 virtual ~RendererCairo(); 51 virtual ~RendererCairo();
50 52
51 // Initializes stuff that has to happen after Init 53 // Initializes stuff that has to happen after Init
52 virtual void InitCommon(); 54 virtual void InitCommon();
53 55
54 virtual void UninitCommon(); 56 virtual void UninitCommon();
55 57
56 // Initialises the renderer for use, claiming hardware resources. 58 // Initialises the renderer for use, claiming hardware resources.
57 virtual InitStatus InitPlatformSpecific(const DisplayWindow& display, 59 virtual InitStatus InitPlatformSpecific(const DisplayWindow& display,
58 bool off_screen); 60 bool off_screen);
59 61
60 // Released all hardware resources. 62 // Released all hardware resources.
61 virtual void Destroy(); 63 virtual void Destroy();
62 64
63 // set the image surface used to render images to the main surface.
64 void SetNewFrame(const void* src_data, unsigned src_width,
65 unsigned src_height, int src_pitch);
66
67 // Paint the frame to the main view 65 // Paint the frame to the main view
68 void Paint(); 66 void Paint();
69 67
68 // Insert the given Image2D to the back of the array.
69 void AddImage2D(Image2D* image);
70
71 // Remove the given Image2D from the array.
72 void RemoveImage2D(Image2D* image);
73
70 // Handles the plugin resize event. 74 // Handles the plugin resize event.
71 virtual void Resize(int width, int height); 75 virtual void Resize(int width, int height);
72 76
73 // Creates and returns a platform-specific RenderDepthStencilSurface object 77 // Creates and returns a platform-specific RenderDepthStencilSurface object
74 // for use as a depth-stencil render target. 78 // for use as a depth-stencil render target.
75 virtual RenderDepthStencilSurface::Ref CreateDepthStencilSurface(int width, 79 virtual RenderDepthStencilSurface::Ref CreateDepthStencilSurface(int width,
76 int height); 80 int height);
77 81
78 // Turns fullscreen display on. 82 // Turns fullscreen display on.
79 // Parameters: 83 // Parameters:
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 135
132 // Creates and returns a platform specific Sampler object. 136 // Creates and returns a platform specific Sampler object.
133 virtual Sampler::Ref CreateSampler(); 137 virtual Sampler::Ref CreateSampler();
134 138
135 // Returns a platform specific 4 element swizzle table for RGBA UByteN 139 // Returns a platform specific 4 element swizzle table for RGBA UByteN
136 // fields. 140 // fields.
137 // The should contain the index of R, G, B, and A in that order for the 141 // The should contain the index of R, G, B, and A in that order for the
138 // current platform. 142 // current platform.
139 virtual const int* GetRGBAUByteNSwizzleTable(); 143 virtual const int* GetRGBAUByteNSwizzleTable();
140 144
145 // Overriden from Renderer
141 void PushRenderStates(State* state); 146 void PushRenderStates(State* state);
142 147
148 // Overrider from Renderer
149 void PopRenderStates();
150
143 protected: 151 protected:
152 typedef std::vector<Image2D*> Image2DRefArray;
153
144 // Keep the constructor protected so only factory methods can create 154 // Keep the constructor protected so only factory methods can create
145 // renderers. 155 // renderers.
146 explicit RendererCairo(ServiceLocator* service_locator); 156 explicit RendererCairo(ServiceLocator* service_locator);
147 157
148 // Sets rendering to the back buffer. 158 // Sets rendering to the back buffer.
149 virtual void SetBackBufferPlatformSpecific(); 159 virtual void SetBackBufferPlatformSpecific();
150 160
151 // Sets the render surfaces on a specific platform. 161 // Sets the render surfaces on a specific platform.
152 virtual void SetRenderSurfacesPlatformSpecific( 162 virtual void SetRenderSurfacesPlatformSpecific(
153 const RenderSurface* surface, 163 const RenderSurface* surface,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 virtual void ApplyDirtyStates(); 208 virtual void ApplyDirtyStates();
199 209
200 // Sets the viewport. This is the platform specific version. 210 // Sets the viewport. This is the platform specific version.
201 virtual void SetViewportInPixels(int left, 211 virtual void SetViewportInPixels(int left,
202 int top, 212 int top,
203 int width, 213 int width,
204 int height, 214 int height,
205 float min_z, 215 float min_z,
206 float max_z); 216 float max_z);
207 217
218 // Mask the are of image_2d_array[index] that will collide with other images.
219 // It assumes the image_2d_array has sorted images as index 0 with
220 // is the most front image.
221 virtual void MaskArea(cairo_t* cr, int index);
222
223 // Paint the background with black color.
224 virtual void PaintBackGround(cairo_t* cr);
225
208 // Linux Client Display 226 // Linux Client Display
209 Display* display_; 227 Display* display_;
210 // Linux Client Window 228 // Linux Client Window
211 Window window_; 229 Window window_;
212 230
213 // Main surface to render cairo 231 // Main surface to render cairo
214 cairo_surface_t* main_surface_; 232 cairo_surface_t* main_surface_;
215 233
216 // Current Frame Data Source 234 // Draw the background
217 const void* frame_src_data_; 235 cairo_t* bg_drawing_;
218 // Current Frame Source Width 236
219 unsigned frame_src_width_; 237 // Array of Image2d
220 // Current Frame Source Height 238 Image2DRefArray image_2d_array_;
221 unsigned frame_src_height_;
222 // Current Frame Source Pitch
223 int frame_src_pitch_;
224 }; 239 };
225 240
226 } // namespace o3d 241 } // namespace o3d
227 242
228 #endif // O3D_CORE_CROSS_CAIRO_RENDERER_CAIRO_H_ 243 #endif // O3D_CORE_CROSS_CAIRO_RENDERER_CAIRO_H_
229 244
OLDNEW
« no previous file with comments | « core/cross/cairo/image_2d.cc ('k') | core/cross/cairo/renderer_cairo.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698