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

Side by Side Diff: pdf/instance.cc

Issue 375253002: [Chrome] Support NumCopies print preset (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review feedback (oop proxy, out-param) Created 6 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 #include "pdf/instance.h" 5 #include "pdf/instance.h"
6 6
7 #include <algorithm> // for min() 7 #include <algorithm> // for min()
8 #define _USE_MATH_DEFINES // for M_PI 8 #define _USE_MATH_DEFINES // for M_PI
9 #include <cmath> // for log() and pow() 9 #include <cmath> // for log() and pow()
10 #include <math.h> 10 #include <math.h>
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 { kZoomOutButtonId, Button::BUTTON_CLICKABLE, 181 { kZoomOutButtonId, Button::BUTTON_CLICKABLE,
182 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT, 182 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT,
183 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER, 183 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER,
184 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED }, 184 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED },
185 { kZoomInButtonId, Button::BUTTON_CLICKABLE, 185 { kZoomInButtonId, Button::BUTTON_CLICKABLE,
186 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END, 186 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END,
187 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_HOVER, 187 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_HOVER,
188 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_PRESSED }, 188 PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_END_PRESSED },
189 }; 189 };
190 190
191 static const char kPPPPdfInterface[] = PPP_PDF_INTERFACE_1; 191 static const char kPPPPdfInterface[] = PPP_PDF_INTERFACE_1_1;
192 192
193 PP_Var GetLinkAtPosition(PP_Instance instance, PP_Point point) { 193 PP_Var GetLinkAtPosition(PP_Instance instance, PP_Point point) {
194 pp::Var var; 194 pp::Var var;
195 void* object = 195 void* object =
196 pp::Instance::GetPerInstanceObject(instance, kPPPPdfInterface); 196 pp::Instance::GetPerInstanceObject(instance, kPPPPdfInterface);
197 if (object) 197 if (object)
198 var = static_cast<Instance*>(object)->GetLinkAtPosition(pp::Point(point)); 198 var = static_cast<Instance*>(object)->GetLinkAtPosition(pp::Point(point));
199 return var.Detach(); 199 return var.Detach();
200 } 200 }
201 201
202 void Transform(PP_Instance instance, PP_PrivatePageTransformType type) { 202 void Transform(PP_Instance instance, PP_PrivatePageTransformType type) {
203 void* object = 203 void* object =
204 pp::Instance::GetPerInstanceObject(instance, kPPPPdfInterface); 204 pp::Instance::GetPerInstanceObject(instance, kPPPPdfInterface);
205 if (object) { 205 if (object) {
206 Instance* obj_instance = static_cast<Instance*>(object); 206 Instance* obj_instance = static_cast<Instance*>(object);
207 switch (type) { 207 switch (type) {
208 case PP_PRIVATEPAGETRANSFORMTYPE_ROTATE_90_CW: 208 case PP_PRIVATEPAGETRANSFORMTYPE_ROTATE_90_CW:
209 obj_instance->RotateClockwise(); 209 obj_instance->RotateClockwise();
210 break; 210 break;
211 case PP_PRIVATEPAGETRANSFORMTYPE_ROTATE_90_CCW: 211 case PP_PRIVATEPAGETRANSFORMTYPE_ROTATE_90_CCW:
212 obj_instance->RotateCounterclockwise(); 212 obj_instance->RotateCounterclockwise();
213 break; 213 break;
214 } 214 }
215 } 215 }
216 } 216 }
217 217
218 PP_Bool GetPrintPresetOptionsFromDocument(PP_Instance instance,
219 PP_PrintPresetOptions_Dev* options) {
220 void* object = pp::Instance::GetPerInstanceObject(instance, kPPPPdfInterface);
221 PP_Bool ret = PP_FALSE;
222 if (object) {
223 Instance* obj_instance = static_cast<Instance*>(object);
224 ret = obj_instance->GetPrintPresetOptionsFromDocument(options);
225 }
226 return ret;
227 }
228
218 const PPP_Pdf ppp_private = { 229 const PPP_Pdf ppp_private = {
219 &GetLinkAtPosition, 230 &GetLinkAtPosition,
220 &Transform 231 &Transform,
232 &GetPrintPresetOptionsFromDocument
221 }; 233 };
222 234
223 int ExtractPrintPreviewPageIndex(const std::string& src_url) { 235 int ExtractPrintPreviewPageIndex(const std::string& src_url) {
224 // Sample |src_url| format: chrome://print/id/page_index/print.pdf 236 // Sample |src_url| format: chrome://print/id/page_index/print.pdf
225 std::vector<std::string> url_substr; 237 std::vector<std::string> url_substr;
226 base::SplitString(src_url.substr(strlen(kChromePrint)), '/', &url_substr); 238 base::SplitString(src_url.substr(strlen(kChromePrint)), '/', &url_substr);
227 if (url_substr.size() != 3) 239 if (url_substr.size() != 3)
228 return -1; 240 return -1;
229 241
230 if (url_substr[2] != "print.pdf") 242 if (url_substr[2] != "print.pdf")
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 pp::Var Instance::GetInstanceObject() { 657 pp::Var Instance::GetInstanceObject() {
646 if (instance_object_.is_undefined()) { 658 if (instance_object_.is_undefined()) {
647 PDFScriptableObject* object = new PDFScriptableObject(this); 659 PDFScriptableObject* object = new PDFScriptableObject(this);
648 // The pp::Var takes ownership of object here. 660 // The pp::Var takes ownership of object here.
649 instance_object_ = pp::VarPrivate(this, object); 661 instance_object_ = pp::VarPrivate(this, object);
650 } 662 }
651 663
652 return instance_object_; 664 return instance_object_;
653 } 665 }
654 666
667 PP_Bool Instance::GetPrintPresetOptionsFromDocument(
668 PP_PrintPresetOptions_Dev* options) {
669 options->is_scaling_disabled = PP_FromBool(IsPrintScalingDisabled());
670 options->copies = engine_->GetCopiesToPrint();
671
672 return PP_TRUE;
raymes 2014/09/24 04:54:39 If the return value is always PP_TRUE, we might as
Nikhil 2014/09/29 11:15:30 I think it can be removed. I'm not sure about beha
raymes 2014/10/01 17:26:23 If you want to keep the PP_Bool in the API, that's
Nikhil 2014/10/07 09:53:37 Done.
673 }
674
655 pp::Var Instance::GetLinkAtPosition(const pp::Point& point) { 675 pp::Var Instance::GetLinkAtPosition(const pp::Point& point) {
656 pp::Point offset_point(point); 676 pp::Point offset_point(point);
657 ScalePoint(device_scale_, &offset_point); 677 ScalePoint(device_scale_, &offset_point);
658 offset_point.set_x(offset_point.x() - available_area_.x()); 678 offset_point.set_x(offset_point.x() - available_area_.x());
659 return engine_->GetLinkAtPosition(offset_point); 679 return engine_->GetLinkAtPosition(offset_point);
660 } 680 }
661 681
662 pp::Var Instance::GetSelectedText(bool html) { 682 pp::Var Instance::GetSelectedText(bool html) {
663 if (html || !engine_->HasPermission(PDFEngine::PERMISSION_COPY)) 683 if (html || !engine_->HasPermission(PDFEngine::PERMISSION_COPY))
664 return pp::Var(); 684 return pp::Var();
(...skipping 2086 matching lines...) Expand 10 before | Expand all | Expand 10 after
2751 return instance_->HasScriptableMethod(name, exception); 2771 return instance_->HasScriptableMethod(name, exception);
2752 } 2772 }
2753 2773
2754 pp::Var PDFScriptableObject::Call(const pp::Var& method, 2774 pp::Var PDFScriptableObject::Call(const pp::Var& method,
2755 const std::vector<pp::Var>& args, 2775 const std::vector<pp::Var>& args,
2756 pp::Var* exception) { 2776 pp::Var* exception) {
2757 return instance_->CallScriptableMethod(method, args, exception); 2777 return instance_->CallScriptableMethod(method, args, exception);
2758 } 2778 }
2759 2779
2760 } // namespace chrome_pdf 2780 } // namespace chrome_pdf
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698