summaryrefslogtreecommitdiffstats
path: root/WebKit/android/nav
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/android/nav')
-rw-r--r--WebKit/android/nav/CacheBuilder.cpp6
-rw-r--r--WebKit/android/nav/SelectText.cpp129
2 files changed, 84 insertions, 51 deletions
diff --git a/WebKit/android/nav/CacheBuilder.cpp b/WebKit/android/nav/CacheBuilder.cpp
index 399c253..1175e8a 100644
--- a/WebKit/android/nav/CacheBuilder.cpp
+++ b/WebKit/android/nav/CacheBuilder.cpp
@@ -488,7 +488,7 @@ void CacheBuilder::Debug::groups() {
snprintf(scratch, sizeof(scratch), "// renderBlock:"
" columnRects=%d columnGap=%d direction=%d"
" hasOverflowClip=%d overflow=(%d,%d,w=%d,h=%d)",
- renderBlock->columnRects(), renderBlock->columnGap(),
+ renderBlock->columnInfo()->columnCount(), renderBlock->columnGap(),
renderBlock->style()->direction(), renderer->hasOverflowClip(),
oRect.x(), oRect.y(), oRect.width(), oRect.height());
newLine();
@@ -582,7 +582,7 @@ void CacheBuilder::Debug::groups() {
mIndex += snprintf(&mBuffer[mIndex], mBufferSize - mIndex, ", %d, %d, %d",
0 /*textBox->spaceAdd()*/, textBox->start(), 0 /*textBox->textPos()*/);
mIndex += snprintf(&mBuffer[mIndex], mBufferSize - mIndex, ", %d, %d, %d, %d",
- textBox->x(), textBox->y(), textBox->width(), textBox->height());
+ textBox->x(), textBox->y(), textBox->logicalWidth(), textBox->logicalHeight());
int baseline = textBox->renderer()->style(textBox->isFirstLineStyle())->font().ascent();
mIndex += snprintf(&mBuffer[mIndex], mBufferSize - mIndex, ", %d }, // %d ",
baseline, ++rectIndex);
@@ -785,6 +785,8 @@ CacheBuilder::CacheBuilder()
void CacheBuilder::adjustForColumns(const ClipColumnTracker& track,
CachedNode* node, IntRect* bounds, RenderBlock* renderer)
{
+ if (!renderer->hasColumns())
+ return;
int x = 0;
int y = 0;
int tx = track.mBounds.x();
diff --git a/WebKit/android/nav/SelectText.cpp b/WebKit/android/nav/SelectText.cpp
index 45d7c0a..f691d47 100644
--- a/WebKit/android/nav/SelectText.cpp
+++ b/WebKit/android/nav/SelectText.cpp
@@ -33,6 +33,7 @@
#include "SkBitmap.h"
#include "SkBounder.h"
#include "SkCanvas.h"
+#include "SkGradientShader.h"
#include "SkMatrix.h"
#include "SkPicture.h"
#include "SkPixelXorXfermode.h"
@@ -1175,70 +1176,100 @@ static WTF::String text(const SkPicture& picture, const SkIRect& area,
return extractor.text();
}
-#define CONTROL_OFFSET 3
-#define CONTROL_NOTCH 9
-#define CONTROL_HEIGHT 18
-#define CONTROL_WIDTH 12
-#define STROKE_WIDTH 0.4f
+#define CONTROL_OFFSET 0
+#define CONTROL_NOTCH 19
+#define CONTROL_HEIGHT 35
+#define CONTROL_WIDTH 21
+#define STROKE_WIDTH 2.0f
+#define STROKE_OUTSET 1.0f
+#define STROKE_NOTCH_R 2.2f
+#define STROKE_NOTCH_L 1.7f
+#define DROP_HEIGHT 4
+
+#define STROKE_COLOR 0x90000000
+#define FILL_GRADIENT_TOP 0xD0F8DFA0
+#define FILL_GRADIENT_BOTTOM 0xD0FFEFEF
+#define DROP_GRADIENT_TOP 0x50000000
+#define DROP_GRADIENT_BOTTOM 0x00000000
+
#define SLOP 20
SelectText::SelectText()
{
reset();
- SkScalar innerW = CONTROL_WIDTH - STROKE_WIDTH;
- SkScalar innerH = CONTROL_HEIGHT - STROKE_WIDTH;
SkPaint paint;
- paint.setAntiAlias(true);
- paint.setStrokeWidth(STROKE_WIDTH);
- SkPath startPath;
- startPath.moveTo(-CONTROL_WIDTH, CONTROL_NOTCH);
- startPath.lineTo(-CONTROL_WIDTH, CONTROL_HEIGHT);
- startPath.lineTo(0, CONTROL_HEIGHT);
- startPath.lineTo(0, CONTROL_OFFSET);
- startPath.close();
-
- SkCanvas* canvas = m_startControl.beginRecording(CONTROL_WIDTH, CONTROL_HEIGHT);
+ SkPath startFillPath;
+ startFillPath.moveTo(-CONTROL_WIDTH + STROKE_OUTSET, CONTROL_NOTCH);
+ startFillPath.lineTo(-CONTROL_WIDTH + STROKE_OUTSET, CONTROL_HEIGHT - STROKE_OUTSET);
+ startFillPath.lineTo(-STROKE_OUTSET, CONTROL_HEIGHT - STROKE_OUTSET);
+ startFillPath.lineTo(-STROKE_OUTSET, CONTROL_OFFSET + STROKE_NOTCH_R);
+ startFillPath.close();
+ SkPath startStrokePath;
+ startStrokePath.moveTo(-CONTROL_WIDTH, CONTROL_NOTCH);
+ startStrokePath.lineTo(-CONTROL_WIDTH, CONTROL_HEIGHT);
+ startStrokePath.lineTo(0, CONTROL_HEIGHT);
+ startStrokePath.lineTo(0, CONTROL_OFFSET);
+ startStrokePath.close();
+ SkPoint gradientLine[] = {{0, 0}, {0, CONTROL_HEIGHT}};
+ SkColor gradientColors[] = {FILL_GRADIENT_TOP, FILL_GRADIENT_BOTTOM};
+ SkShader* fillGradient = SkGradientShader::CreateLinear(gradientLine,
+ gradientColors, 0, 2, SkShader::kClamp_TileMode);
+ SkPoint dropLine[] = {{0, CONTROL_HEIGHT}, {0, CONTROL_HEIGHT + DROP_HEIGHT}};
+ SkColor dropColors[] = {DROP_GRADIENT_TOP, DROP_GRADIENT_BOTTOM};
+ SkShader* dropGradient = SkGradientShader::CreateLinear(dropLine,
+ dropColors, 0, 2, SkShader::kClamp_TileMode);
+ SkRect startDropRect = {-CONTROL_WIDTH - STROKE_OUTSET, CONTROL_HEIGHT,
+ STROKE_OUTSET, CONTROL_HEIGHT + DROP_HEIGHT};
+
+ SkCanvas* canvas = m_startControl.beginRecording(CONTROL_WIDTH, CONTROL_HEIGHT + DROP_HEIGHT);
+ paint.setAntiAlias(true);
paint.setStyle(SkPaint::kFill_Style);
- paint.setColor(0xD077A14B);
- canvas->drawPath(startPath, paint);
+ paint.setShader(fillGradient);
+ canvas->drawPath(startFillPath, paint);
+ paint.setShader(0);
paint.setStyle(SkPaint::kStroke_Style);
- paint.setColor(0x40000000);
- canvas->drawLine(-innerW, CONTROL_NOTCH, -innerW, innerH, paint);
- canvas->drawLine(-innerW + STROKE_WIDTH, innerH, -STROKE_WIDTH, innerH, paint);
- paint.setColor(0x40ffffff);
- canvas->drawLine(0, CONTROL_OFFSET + STROKE_WIDTH,
- -CONTROL_WIDTH, CONTROL_NOTCH + STROKE_WIDTH, paint);
- canvas->drawLine(-STROKE_WIDTH, CONTROL_NOTCH + STROKE_WIDTH,
- -STROKE_WIDTH, innerH, paint);
- paint.setColor(0xffaaaaaa);
- canvas->drawPath(startPath, paint);
+ paint.setColor(STROKE_COLOR);
+ paint.setStrokeWidth(STROKE_WIDTH);
+ canvas->drawPath(startStrokePath, paint);
+ paint.setStyle(SkPaint::kFill_Style);
+ paint.setColor(0xff000000);
+ paint.setShader(dropGradient);
+ canvas->drawRect(startDropRect, paint);
m_startControl.endRecording();
- SkPath endPath;
- endPath.moveTo(0, CONTROL_OFFSET);
- endPath.lineTo(0, CONTROL_HEIGHT);
- endPath.lineTo(CONTROL_WIDTH, CONTROL_HEIGHT);
- endPath.lineTo(CONTROL_WIDTH, CONTROL_NOTCH);
- endPath.close();
+ SkPath endFillPath;
+ endFillPath.moveTo(STROKE_OUTSET, CONTROL_OFFSET + STROKE_NOTCH_R);
+ endFillPath.lineTo(STROKE_OUTSET, CONTROL_HEIGHT - STROKE_OUTSET);
+ endFillPath.lineTo(CONTROL_WIDTH - STROKE_OUTSET, CONTROL_HEIGHT - STROKE_OUTSET);
+ endFillPath.lineTo(CONTROL_WIDTH - STROKE_OUTSET, CONTROL_NOTCH);
+ endFillPath.close();
+ SkPath endStrokePath;
+ endStrokePath.moveTo(0, CONTROL_OFFSET);
+ endStrokePath.lineTo(0, CONTROL_HEIGHT);
+ endStrokePath.lineTo(CONTROL_WIDTH, CONTROL_HEIGHT);
+ endStrokePath.lineTo(CONTROL_WIDTH, CONTROL_NOTCH);
+ endStrokePath.close();
+ SkRect endDropRect = {-STROKE_OUTSET, CONTROL_HEIGHT,
+ CONTROL_WIDTH + STROKE_OUTSET, CONTROL_HEIGHT + DROP_HEIGHT};
canvas = m_endControl.beginRecording(CONTROL_WIDTH, CONTROL_HEIGHT);
+ paint.setColor(0xff000000);
paint.setStyle(SkPaint::kFill_Style);
- paint.setColor(0xD077A14B);
- canvas->drawPath(endPath, paint);
+ paint.setShader(fillGradient);
+ canvas->drawPath(endFillPath, paint);
+ paint.setShader(0);
paint.setStyle(SkPaint::kStroke_Style);
- paint.setColor(0x40000000);
- canvas->drawLine(STROKE_WIDTH, CONTROL_OFFSET + STROKE_WIDTH,
- STROKE_WIDTH, innerH, paint);
- canvas->drawLine(STROKE_WIDTH + STROKE_WIDTH, innerH, innerW, innerH, paint);
- paint.setColor(0x40ffffff);
- canvas->drawLine(0, CONTROL_OFFSET + STROKE_WIDTH,
- CONTROL_WIDTH, CONTROL_NOTCH + STROKE_WIDTH, paint);
- canvas->drawLine(STROKE_WIDTH, CONTROL_NOTCH + STROKE_WIDTH,
- STROKE_WIDTH, innerH, paint);
- paint.setColor(0xffaaaaaa);
- canvas->drawPath(endPath, paint);
+ paint.setColor(STROKE_COLOR);
+ paint.setStrokeWidth(STROKE_WIDTH);
+ canvas->drawPath(endStrokePath, paint);
+ paint.setStyle(SkPaint::kFill_Style);
+ paint.setColor(0xff000000);
+ paint.setShader(dropGradient);
+ canvas->drawRect(endDropRect, paint);
m_endControl.endRecording();
+ fillGradient->safeUnref();
+ dropGradient->safeUnref();
m_picture = 0;
}
@@ -1304,7 +1335,7 @@ void SelectText::drawSelectionRegion(SkCanvas* canvas)
SkPaint paint;
paint.setAntiAlias(true);
- paint.setColor(SkColorSetARGB(0x80, 151, 200, 73));
+ paint.setColor(SkColorSetARGB(0x80, 0xFF, 0xA8, 0x00));
canvas->drawPath(path, paint);
// experiment to draw touchable controls that resize the selection
canvas->save();