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

Side by Side Diff: Source/platform/scroll/ScrollbarThemeNonMacCommon.cpp

Issue 1220583004: Refactor DrawingRecorders to check for cached drawings earlier (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix some !'s and &&'s. De Morgan would be proud. Created 5 years, 5 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 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * Copyright (C) 2008, 2009 Google Inc. 3 * Copyright (C) 2008, 2009 Google Inc.
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 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 100
101 if (rect.height() <= 0 || rect.width() <= 0) 101 if (rect.height() <= 0 || rect.width() <= 0)
102 return; 102 return;
103 103
104 // Get the tickmarks for the frameview. 104 // Get the tickmarks for the frameview.
105 Vector<IntRect> tickmarks; 105 Vector<IntRect> tickmarks;
106 scrollbar->getTickmarks(tickmarks); 106 scrollbar->getTickmarks(tickmarks);
107 if (!tickmarks.size()) 107 if (!tickmarks.size())
108 return; 108 return;
109 109
110 DrawingRecorder recorder(*context, *scrollbar, DisplayItem::ScrollbarTickmar ks, rect); 110 if (DrawingRecorder::useCachedDrawingIfPossible(*context, *scrollbar, Displa yItem::ScrollbarTickmarks))
111 if (recorder.canUseCachedDrawing())
112 return; 111 return;
113 112
113 DrawingRecorder recorder(*context, *scrollbar, DisplayItem::ScrollbarTickmar ks, rect);
114 GraphicsContextStateSaver stateSaver(*context); 114 GraphicsContextStateSaver stateSaver(*context);
115 context->setShouldAntialias(false); 115 context->setShouldAntialias(false);
116 116
117 for (Vector<IntRect>::const_iterator i = tickmarks.begin(); i != tickmarks.e nd(); ++i) { 117 for (Vector<IntRect>::const_iterator i = tickmarks.begin(); i != tickmarks.e nd(); ++i) {
118 // Calculate how far down (in %) the tick-mark should appear. 118 // Calculate how far down (in %) the tick-mark should appear.
119 const float percent = static_cast<float>(i->y()) / scrollbar->totalSize( ); 119 const float percent = static_cast<float>(i->y()) / scrollbar->totalSize( );
120 120
121 // Calculate how far down (in pixels) the tick-mark should appear. 121 // Calculate how far down (in pixels) the tick-mark should appear.
122 const int yPos = rect.y() + (rect.height() * percent); 122 const int yPos = rect.y() + (rect.height() * percent);
123 123
124 FloatRect tickRect(rect.x(), yPos, rect.width(), 3); 124 FloatRect tickRect(rect.x(), yPos, rect.width(), 3);
125 context->fillRect(tickRect, Color(0xCC, 0xAA, 0x00, 0xFF)); 125 context->fillRect(tickRect, Color(0xCC, 0xAA, 0x00, 0xFF));
126 126
127 FloatRect tickStroke(rect.x(), yPos + 1, rect.width(), 1); 127 FloatRect tickStroke(rect.x(), yPos + 1, rect.width(), 1);
128 context->fillRect(tickStroke, Color(0xFF, 0xDD, 0x00, 0xFF)); 128 context->fillRect(tickStroke, Color(0xFF, 0xDD, 0x00, 0xFF));
129 } 129 }
130 } 130 }
131 131
132 } // namespace blink 132 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698