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

Side by Side Diff: include/core/SkCanvas.h

Issue 113193004: remove SkScalarCompare type and header (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years 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 | « gyp/public_headers.gypi ('k') | include/core/SkScalarCompare.h » ('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 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkCanvas_DEFINED 10 #ifndef SkCanvas_DEFINED
11 #define SkCanvas_DEFINED 11 #define SkCanvas_DEFINED
12 12
13 #include "SkTypes.h" 13 #include "SkTypes.h"
14 #include "SkBitmap.h" 14 #include "SkBitmap.h"
15 #include "SkDeque.h" 15 #include "SkDeque.h"
16 #include "SkClipStack.h" 16 #include "SkClipStack.h"
17 #include "SkPaint.h" 17 #include "SkPaint.h"
18 #include "SkRefCnt.h" 18 #include "SkRefCnt.h"
19 #include "SkPath.h" 19 #include "SkPath.h"
20 #include "SkRegion.h" 20 #include "SkRegion.h"
21 #include "SkScalarCompare.h"
22 #include "SkXfermode.h" 21 #include "SkXfermode.h"
23 22
24 class SkBounder; 23 class SkBounder;
25 class SkBaseDevice; 24 class SkBaseDevice;
26 class SkDraw; 25 class SkDraw;
27 class SkDrawFilter; 26 class SkDrawFilter;
28 class SkMetaData; 27 class SkMetaData;
29 class SkPicture; 28 class SkPicture;
30 class SkRRect; 29 class SkRRect;
31 class SkSurface_Base; 30 class SkSurface_Base;
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 completely clipped out. This is a conservative calculation, meaning 447 completely clipped out. This is a conservative calculation, meaning
449 that it is possible that if the method returns false, the band may still 448 that it is possible that if the method returns false, the band may still
450 in fact be clipped out, but the converse is not true. If this method 449 in fact be clipped out, but the converse is not true. If this method
451 returns true, then the band is guaranteed to be clipped out. 450 returns true, then the band is guaranteed to be clipped out.
452 @param top The top of the horizontal band to compare with the clip 451 @param top The top of the horizontal band to compare with the clip
453 @param bottom The bottom of the horizontal and to compare with the clip 452 @param bottom The bottom of the horizontal and to compare with the clip
454 @return true if the horizontal band is completely clipped out (i.e. does 453 @return true if the horizontal band is completely clipped out (i.e. does
455 not intersect the current clip) 454 not intersect the current clip)
456 */ 455 */
457 bool quickRejectY(SkScalar top, SkScalar bottom) const { 456 bool quickRejectY(SkScalar top, SkScalar bottom) const {
458 SkASSERT(SkScalarToCompareType(top) <= SkScalarToCompareType(bottom)); 457 SkASSERT(top <= bottom);
459 const SkRectCompareType& clipR = this->getLocalClipBoundsCompareType(); 458 const SkRect& clipR = this->getLocalClipBounds();
460 // In the case where the clip is empty and we are provided with a 459 // In the case where the clip is empty and we are provided with a
461 // negative top and positive bottom parameter then this test will return 460 // negative top and positive bottom parameter then this test will return
462 // false even though it will be clipped. We have chosen to exclude that 461 // false even though it will be clipped. We have chosen to exclude that
463 // check as it is rare and would result double the comparisons. 462 // check as it is rare and would result double the comparisons.
464 return SkScalarToCompareType(top) >= clipR.fBottom 463 return top >= clipR.fBottom || bottom <= clipR.fTop;
465 || SkScalarToCompareType(bottom) <= clipR.fTop;
466 } 464 }
467 465
468 /** Return the bounds of the current clip (in local coordinates) in the 466 /** Return the bounds of the current clip (in local coordinates) in the
469 bounds parameter, and return true if it is non-empty. This can be useful 467 bounds parameter, and return true if it is non-empty. This can be useful
470 in a way similar to quickReject, in that it tells you that drawing 468 in a way similar to quickReject, in that it tells you that drawing
471 outside of these bounds will be clipped out. 469 outside of these bounds will be clipped out.
472 */ 470 */
473 bool getClipBounds(SkRect* bounds) const; 471 bool getClipBounds(SkRect* bounds) const;
474 472
475 /** Return the bounds of the current clip, in device coordinates; returns 473 /** Return the bounds of the current clip, in device coordinates; returns
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 void internalRestore(); 1091 void internalRestore();
1094 static void DrawRect(const SkDraw& draw, const SkPaint& paint, 1092 static void DrawRect(const SkDraw& draw, const SkPaint& paint,
1095 const SkRect& r, SkScalar textSize); 1093 const SkRect& r, SkScalar textSize);
1096 static void DrawTextDecorations(const SkDraw& draw, const SkPaint& paint, 1094 static void DrawTextDecorations(const SkDraw& draw, const SkPaint& paint,
1097 const char text[], size_t byteLength, 1095 const char text[], size_t byteLength,
1098 SkScalar x, SkScalar y); 1096 SkScalar x, SkScalar y);
1099 1097
1100 /* These maintain a cache of the clip bounds in local coordinates, 1098 /* These maintain a cache of the clip bounds in local coordinates,
1101 (converted to 2s-compliment if floats are slow). 1099 (converted to 2s-compliment if floats are slow).
1102 */ 1100 */
1103 mutable SkRectCompareType fLocalBoundsCompareType; 1101 mutable SkRect fCachedLocalClipBounds;
1104 mutable bool fLocalBoundsCompareTypeDirty; 1102 mutable bool fCachedLocalClipBoundsDirty;
1105 bool fAllowSoftClip; 1103 bool fAllowSoftClip;
1106 bool fAllowSimplifyClip; 1104 bool fAllowSimplifyClip;
1107 1105
1108 const SkRectCompareType& getLocalClipBoundsCompareType() const { 1106 const SkRect& getLocalClipBounds() const {
1109 if (fLocalBoundsCompareTypeDirty) { 1107 if (fCachedLocalClipBoundsDirty) {
1110 this->computeLocalClipBoundsCompareType(); 1108 if (!this->getClipBounds(&fCachedLocalClipBounds)) {
1111 fLocalBoundsCompareTypeDirty = false; 1109 fCachedLocalClipBounds.setEmpty();
1110 }
1111 fCachedLocalClipBoundsDirty = false;
1112 } 1112 }
1113 return fLocalBoundsCompareType; 1113 return fCachedLocalClipBounds;
1114 } 1114 }
1115 void computeLocalClipBoundsCompareType() const;
1116
1117 1115
1118 class AutoValidateClip : ::SkNoncopyable { 1116 class AutoValidateClip : ::SkNoncopyable {
1119 public: 1117 public:
1120 explicit AutoValidateClip(SkCanvas* canvas) : fCanvas(canvas) { 1118 explicit AutoValidateClip(SkCanvas* canvas) : fCanvas(canvas) {
1121 fCanvas->validateClip(); 1119 fCanvas->validateClip();
1122 } 1120 }
1123 ~AutoValidateClip() { fCanvas->validateClip(); } 1121 ~AutoValidateClip() { fCanvas->validateClip(); }
1124 1122
1125 private: 1123 private:
1126 const SkCanvas* fCanvas; 1124 const SkCanvas* fCanvas;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 fCanvas->endCommentGroup(); 1186 fCanvas->endCommentGroup();
1189 } 1187 }
1190 } 1188 }
1191 1189
1192 private: 1190 private:
1193 SkCanvas* fCanvas; 1191 SkCanvas* fCanvas;
1194 }; 1192 };
1195 #define SkAutoCommentBlock(...) SK_REQUIRE_LOCAL_VAR(SkAutoCommentBlock) 1193 #define SkAutoCommentBlock(...) SK_REQUIRE_LOCAL_VAR(SkAutoCommentBlock)
1196 1194
1197 #endif 1195 #endif
OLDNEW
« no previous file with comments | « gyp/public_headers.gypi ('k') | include/core/SkScalarCompare.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698