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

Side by Side Diff: pdf/control.cc

Issue 294793003: Add the pdf plugin's source in src\pdf. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: review comments and sync past DEPS roll to fix gyp Created 6 years, 7 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 | « pdf/control.h ('k') | pdf/document_loader.h » ('j') | pdf/pdf.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "pdf/control.h"
6
7 #include "base/logging.h"
8 #include "pdf/draw_utils.h"
9
10 namespace chrome_pdf {
11
12 Control::Control()
13 : id_(kInvalidControlId),
14 visible_(false),
15 owner_(NULL),
16 transparency_(kOpaqueAlpha) {
17 }
18
19 Control::~Control() {
20 }
21
22 bool Control::Create(uint32 id, const pp::Rect& rc,
23 bool visible, Owner* owner) {
24 DCHECK(owner);
25 if (owner_ || id == kInvalidControlId)
26 return false; // Already created or id is invalid.
27 id_ = id;
28 rc_ = rc;
29 visible_ = visible;
30 owner_ = owner;
31 return true;
32 }
33
34 bool Control::HandleEvent(const pp::InputEvent& event) {
35 return false;
36 }
37
38 void Control::PaintMultipleRects(pp::ImageData* image_data,
39 const std::list<pp::Rect>& rects) {
40 DCHECK(rects.size() > 0);
41 if (rects.size() == 1) {
42 Paint(image_data, rects.front());
43 return;
44 }
45
46 // Some rects in the input list may overlap. To prevent double
47 // paining (causes problems with semi-transparent controls) we'll
48 // paint control into buffer image data only once and copy requested
49 // rectangles.
50 pp::ImageData buffer(owner()->GetInstance(), image_data->format(),
51 rect().size(), false);
52 pp::Rect draw_rc = pp::Rect(image_data->size()).Intersect(rect());
53 pp::Rect ctrl_rc = pp::Rect(rect().point() - draw_rc.point(), draw_rc.size());
54 CopyImage(*image_data, draw_rc, &buffer, ctrl_rc, false);
55
56 // Temporary move control to origin (0,0) and draw it into temp buffer.
57 // Move to the original position afterward. Since this is going on temp
58 // buffer, we don't need to invalidate here.
59 pp::Rect temp = rect();
60 MoveTo(pp::Point(0, 0), false);
61 Paint(&buffer, ctrl_rc);
62 MoveTo(temp.point(), false);
63
64 std::list<pp::Rect>::const_iterator iter;
65 for (iter = rects.begin(); iter != rects.end(); ++iter) {
66 pp::Rect draw_rc = rect().Intersect(*iter);
67 if (!draw_rc.IsEmpty()) {
68 // Copy requested rect from the buffer image.
69 pp::Rect src_rc = draw_rc;
70 src_rc.Offset(-rect().x(), -rect().y());
71 CopyImage(buffer, src_rc, image_data, draw_rc, false);
72 }
73 }
74 }
75
76 void Control::Show(bool visible, bool invalidate) {
77 if (visible_ != visible) {
78 visible_ = visible;
79 if (invalidate)
80 owner_->Invalidate(id_, rc_);
81 }
82 }
83
84 void Control::AdjustTransparency(uint8 transparency, bool invalidate) {
85 if (transparency_ != transparency) {
86 transparency_ = transparency;
87 if (invalidate && visible_)
88 owner_->Invalidate(id_, rc_);
89 }
90 }
91
92 void Control::MoveBy(const pp::Point& offset, bool invalidate) {
93 pp::Rect old_rc = rc_;
94 rc_.Offset(offset);
95 if (invalidate && visible_) {
96 owner()->Invalidate(id(), old_rc);
97 owner()->Invalidate(id(), rect());
98 }
99 }
100
101 void Control::SetRect(const pp::Rect& rc, bool invalidate) {
102 pp::Rect old_rc = rc_;
103 rc_ = rc;
104 if (invalidate && visible_) {
105 owner()->Invalidate(id(), old_rc);
106 owner()->Invalidate(id(), rect());
107 }
108 }
109
110 void Control::MoveTo(const pp::Point& origin, bool invalidate) {
111 MoveBy(origin - rc_.point(), invalidate);
112 }
113
114 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « pdf/control.h ('k') | pdf/document_loader.h » ('j') | pdf/pdf.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698