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

Side by Side Diff: chrome/browser/renderer_host/backing_store.h

Issue 19491: POSIX: bitmap data on the wire (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 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 | « chrome/browser/browser.scons ('k') | chrome/browser/renderer_host/backing_store.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 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_ 5 #ifndef CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_
6 #define CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_ 6 #define CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/gfx/rect.h" 9 #include "base/gfx/rect.h"
10 #include "base/gfx/size.h" 10 #include "base/gfx/size.h"
11 #include "base/process.h" 11 #include "base/process.h"
12 #include "build/build_config.h" 12 #include "build/build_config.h"
13 #include "chrome/common/bitmap_wire_data.h"
13 #include "chrome/common/mru_cache.h" 14 #include "chrome/common/mru_cache.h"
14 15
15 #if defined(OS_WIN) 16 #if defined(OS_WIN)
16 #include <windows.h> 17 #include <windows.h>
18 #elif defined(OS_POSIX)
19 #include "skia/ext/platform_canvas.h"
17 #endif 20 #endif
18 21
19 class RenderWidgetHost; 22 class RenderWidgetHost;
20 23
21 // BackingStore ---------------------------------------------------------------- 24 // BackingStore ----------------------------------------------------------------
22 25
23 // Represents a backing store for the pixels in a RenderWidgetHost. 26 // Represents a backing store for the pixels in a RenderWidgetHost.
24 class BackingStore { 27 class BackingStore {
25 public: 28 public:
26 explicit BackingStore(const gfx::Size& size); 29 explicit BackingStore(const gfx::Size& size);
27 ~BackingStore(); 30 ~BackingStore();
28 31
29 const gfx::Size& size() { return size_; } 32 const gfx::Size& size() { return size_; }
30 33
31 #if defined(OS_WIN) 34 #if defined(OS_WIN)
32 HDC hdc() { return hdc_; } 35 HDC hdc() { return hdc_; }
33 #endif 36 #endif
34 37
35 // Paints the bitmap from the renderer onto the backing store. 38 // Paints the bitmap from the renderer onto the backing store.
36 // TODO(port): The HANDLE is a shared section on Windows. Abstract this.
37 bool PaintRect(base::ProcessHandle process, 39 bool PaintRect(base::ProcessHandle process,
38 HANDLE bitmap_section, 40 BitmapWireData bitmap_section,
39 const gfx::Rect& bitmap_rect); 41 const gfx::Rect& bitmap_rect);
40 42
41 // Scrolls the given rect in the backing store, replacing the given region 43 // Scrolls the given rect in the backing store, replacing the given region
42 // identified by |bitmap_rect| by the bitmap in the file identified by the 44 // identified by |bitmap_rect| by the bitmap in the file identified by the
43 // given file handle. 45 // given file handle.
44 // TODO(port): The HANDLE is a shared section on Windows. Abstract this.
45 void ScrollRect(base::ProcessHandle process, 46 void ScrollRect(base::ProcessHandle process,
46 HANDLE bitmap, const gfx::Rect& bitmap_rect, 47 BitmapWireData bitmap, const gfx::Rect& bitmap_rect,
47 int dx, int dy, 48 int dx, int dy,
48 const gfx::Rect& clip_rect, 49 const gfx::Rect& clip_rect,
49 const gfx::Size& view_size); 50 const gfx::Size& view_size);
50 51
51 private: 52 private:
52 // The size of the backing store. 53 // The size of the backing store.
53 gfx::Size size_; 54 gfx::Size size_;
54 55
55 #if defined(OS_WIN) 56 #if defined(OS_WIN)
56 // Creates a dib conforming to the height/width/section parameters passed 57 // Creates a dib conforming to the height/width/section parameters passed
57 // in. The use_os_color_depth parameter controls whether we use the color 58 // in. The use_os_color_depth parameter controls whether we use the color
58 // depth to create an appropriate dib or not. 59 // depth to create an appropriate dib or not.
59 HANDLE CreateDIB(HDC dc, 60 HANDLE CreateDIB(HDC dc,
60 int width, int height, 61 int width, int height,
61 bool use_os_color_depth, 62 bool use_os_color_depth,
62 HANDLE section); 63 HANDLE section);
63 64
64 // The backing store dc. 65 // The backing store dc.
65 HDC hdc_; 66 HDC hdc_;
66 67
67 // Handle to the backing store dib. 68 // Handle to the backing store dib.
68 HANDLE backing_store_dib_; 69 HANDLE backing_store_dib_;
69 70
70 // Handle to the original bitmap in the dc. 71 // Handle to the original bitmap in the dc.
71 HANDLE original_bitmap_; 72 HANDLE original_bitmap_;
72 #endif 73 #elif defined(OS_POSIX)
74 skia::PlatformCanvas canvas_;
75 #endif // defined(OS_WIN)
73 76
74 DISALLOW_COPY_AND_ASSIGN(BackingStore); 77 DISALLOW_COPY_AND_ASSIGN(BackingStore);
75 }; 78 };
76 79
77 // BackingStoreManager --------------------------------------------------------- 80 // BackingStoreManager ---------------------------------------------------------
78 81
79 // This class manages backing stores in the browsr. Every RenderWidgetHost is 82 // This class manages backing stores in the browsr. Every RenderWidgetHost is
80 // associated with a backing store which it requests from this class. The 83 // associated with a backing store which it requests from this class. The
81 // hosts don't maintain any references to the backing stores. These backing 84 // hosts don't maintain any references to the backing stores. These backing
82 // stores are maintained in a cache which can be trimmed as needed. 85 // stores are maintained in a cache which can be trimmed as needed.
(...skipping 15 matching lines...) Expand all
98 // The desired backing store dimensions. 101 // The desired backing store dimensions.
99 // process_handle 102 // process_handle
100 // The renderer process handle. 103 // The renderer process handle.
101 // bitmap_section 104 // bitmap_section
102 // The bitmap section from the renderer. 105 // The bitmap section from the renderer.
103 // bitmap_rect 106 // bitmap_rect
104 // The rect to be painted into the backing store 107 // The rect to be painted into the backing store
105 // needs_full_paint 108 // needs_full_paint
106 // Set if we need to send out a request to paint the view 109 // Set if we need to send out a request to paint the view
107 // to the renderer. 110 // to the renderer.
108 // TODO(port): The HANDLE is a shared section on Windows. Abstract this.
109 static BackingStore* PrepareBackingStore(RenderWidgetHost* host, 111 static BackingStore* PrepareBackingStore(RenderWidgetHost* host,
110 const gfx::Rect& backing_store_rect, 112 const gfx::Rect& backing_store_rect,
111 base::ProcessHandle process_handle, 113 base::ProcessHandle process_handle,
112 HANDLE bitmap_section, 114 BitmapWireData bitmap_section,
113 const gfx::Rect& bitmap_rect, 115 const gfx::Rect& bitmap_rect,
114 bool* needs_full_paint); 116 bool* needs_full_paint);
115 117
116 // Returns a matching backing store for the host. 118 // Returns a matching backing store for the host.
117 // Returns NULL if we fail to find one. 119 // Returns NULL if we fail to find one.
118 static BackingStore* Lookup(RenderWidgetHost* host); 120 static BackingStore* Lookup(RenderWidgetHost* host);
119 121
120 // Removes the backing store for the host. 122 // Removes the backing store for the host.
121 static void RemoveBackingStore(RenderWidgetHost* host); 123 static void RemoveBackingStore(RenderWidgetHost* host);
122 124
123 private: 125 private:
124 // Not intended for instantiation. 126 // Not intended for instantiation.
125 BackingStoreManager() {} 127 BackingStoreManager() {}
126 128
127 DISALLOW_COPY_AND_ASSIGN(BackingStoreManager); 129 DISALLOW_COPY_AND_ASSIGN(BackingStoreManager);
128 }; 130 };
129 131
130 #endif // CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_ 132 #endif // CHROME_BROWSER_RENDERER_HOST_BACKING_STORE_H_
OLDNEW
« no previous file with comments | « chrome/browser/browser.scons ('k') | chrome/browser/renderer_host/backing_store.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698