OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "core/paint/NinePieceImageGrid.h" | 5 #include "core/paint/NinePieceImageGrid.h" |
6 | 6 |
7 #include "core/css/CSSGradientValue.h" | 7 #include "core/css/CSSGradientValue.h" |
8 #include "core/layout/LayoutTestHelper.h" | 8 #include "core/layout/LayoutTestHelper.h" |
9 #include "core/style/ComputedStyle.h" | 9 #include "core/style/ComputedStyle.h" |
10 #include "core/style/NinePieceImage.h" | 10 #include "core/style/NinePieceImage.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 { | 35 { |
36 NinePieceImage ninePiece; | 36 NinePieceImage ninePiece; |
37 ninePiece.setImage(generatedImage()); | 37 ninePiece.setImage(generatedImage()); |
38 | 38 |
39 IntSize imageSize(100, 100); | 39 IntSize imageSize(100, 100); |
40 IntRect borderImageArea(0, 0, 100, 100); | 40 IntRect borderImageArea(0, 0, 100, 100); |
41 IntRectOutsets borderWidths(0, 0, 0, 0); | 41 IntRectOutsets borderWidths(0, 0, 0, 0); |
42 | 42 |
43 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); | 43 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); |
44 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { | 44 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { |
45 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece); | 45 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece, 1); |
46 EXPECT_FALSE(drawInfo.isDrawable); | 46 EXPECT_FALSE(drawInfo.isDrawable); |
47 } | 47 } |
48 } | 48 } |
49 | 49 |
50 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_AllDrawable) | 50 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_AllDrawable) |
51 { | 51 { |
52 NinePieceImage ninePiece; | 52 NinePieceImage ninePiece; |
53 ninePiece.setImage(generatedImage()); | 53 ninePiece.setImage(generatedImage()); |
54 ninePiece.setImageSlices(LengthBox(10, 10, 10, 10)); | 54 ninePiece.setImageSlices(LengthBox(10, 10, 10, 10)); |
55 ninePiece.setFill(true); | 55 ninePiece.setFill(true); |
56 | 56 |
57 IntSize imageSize(100, 100); | 57 IntSize imageSize(100, 100); |
58 IntRect borderImageArea(0, 0, 100, 100); | 58 IntRect borderImageArea(0, 0, 100, 100); |
59 IntRectOutsets borderWidths(10, 10, 10, 10); | 59 IntRectOutsets borderWidths(10, 10, 10, 10); |
60 | 60 |
61 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); | 61 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); |
62 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { | 62 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { |
63 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece); | 63 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece, 1); |
64 EXPECT_TRUE(drawInfo.isDrawable); | 64 EXPECT_TRUE(drawInfo.isDrawable); |
65 } | 65 } |
66 } | 66 } |
67 | 67 |
68 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_NoFillMiddleNotDrawable) | 68 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_NoFillMiddleNotDrawable) |
69 { | 69 { |
70 NinePieceImage ninePiece; | 70 NinePieceImage ninePiece; |
71 ninePiece.setImage(generatedImage()); | 71 ninePiece.setImage(generatedImage()); |
72 ninePiece.setImageSlices(LengthBox(10, 10, 10, 10)); | 72 ninePiece.setImageSlices(LengthBox(10, 10, 10, 10)); |
73 ninePiece.setFill(false); // default | 73 ninePiece.setFill(false); // default |
74 | 74 |
75 IntSize imageSize(100, 100); | 75 IntSize imageSize(100, 100); |
76 IntRect borderImageArea(0, 0, 100, 100); | 76 IntRect borderImageArea(0, 0, 100, 100); |
77 IntRectOutsets borderWidths(10, 10, 10, 10); | 77 IntRectOutsets borderWidths(10, 10, 10, 10); |
78 | 78 |
79 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); | 79 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); |
80 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { | 80 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { |
81 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece); | 81 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece, 1); |
82 if (piece != MiddlePiece) | 82 if (piece != MiddlePiece) |
83 EXPECT_TRUE(drawInfo.isDrawable); | 83 EXPECT_TRUE(drawInfo.isDrawable); |
84 else | 84 else |
85 EXPECT_FALSE(drawInfo.isDrawable); | 85 EXPECT_FALSE(drawInfo.isDrawable); |
86 } | 86 } |
87 } | 87 } |
88 | 88 |
89 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_TopLeftDrawable) | 89 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_TopLeftDrawable) |
90 { | 90 { |
91 NinePieceImage ninePiece; | 91 NinePieceImage ninePiece; |
(...skipping 10 matching lines...) Expand all Loading... |
102 } testCases[] = { | 102 } testCases[] = { |
103 { IntRectOutsets(0, 0, 0, 0), false }, | 103 { IntRectOutsets(0, 0, 0, 0), false }, |
104 { IntRectOutsets(10, 0, 0, 0), false }, | 104 { IntRectOutsets(10, 0, 0, 0), false }, |
105 { IntRectOutsets(0, 0, 0, 10), false }, | 105 { IntRectOutsets(0, 0, 0, 10), false }, |
106 { IntRectOutsets(10, 0, 0, 10), true }, | 106 { IntRectOutsets(10, 0, 0, 10), true }, |
107 }; | 107 }; |
108 | 108 |
109 for (const auto& testCase : testCases) { | 109 for (const auto& testCase : testCases) { |
110 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borde
rImageArea, testCase.borderWidths); | 110 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borde
rImageArea, testCase.borderWidths); |
111 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { | 111 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { |
112 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDr
awInfo(piece); | 112 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDr
awInfo(piece, 1); |
113 if (piece == TopLeftPiece) | 113 if (piece == TopLeftPiece) |
114 EXPECT_EQ(drawInfo.isDrawable, testCase.expectedIsDrawable); | 114 EXPECT_EQ(drawInfo.isDrawable, testCase.expectedIsDrawable); |
115 } | 115 } |
116 } | 116 } |
117 } | 117 } |
118 | 118 |
119 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_ScaleDownBorder) | 119 TEST_F(NinePieceImageGridTest, NinePieceImagePainting_ScaleDownBorder) |
120 { | 120 { |
121 NinePieceImage ninePiece; | 121 NinePieceImage ninePiece; |
122 ninePiece.setImage(generatedImage()); | 122 ninePiece.setImage(generatedImage()); |
123 ninePiece.setImageSlices(LengthBox(10, 10, 10, 10)); | 123 ninePiece.setImageSlices(LengthBox(10, 10, 10, 10)); |
124 | 124 |
125 IntSize imageSize(100, 100); | 125 IntSize imageSize(100, 100); |
126 IntRect borderImageArea(0, 0, 100, 100); | 126 IntRect borderImageArea(0, 0, 100, 100); |
127 IntRectOutsets borderWidths(10, 10, 10, 10); | 127 IntRectOutsets borderWidths(10, 10, 10, 10); |
128 | 128 |
129 // Set border slices wide enough so that the widths are scaled | 129 // Set border slices wide enough so that the widths are scaled |
130 // down and corner pieces cover the entire border image area. | 130 // down and corner pieces cover the entire border image area. |
131 ninePiece.setBorderSlices(BorderImageLengthBox(6)); | 131 ninePiece.setBorderSlices(BorderImageLengthBox(6)); |
132 | 132 |
133 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); | 133 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, imageSize, borderIma
geArea, borderWidths); |
134 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { | 134 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { |
135 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece); | 135 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDrawIn
fo(piece, 1); |
136 if (drawInfo.isCornerPiece) | 136 if (drawInfo.isCornerPiece) |
137 EXPECT_EQ(drawInfo.destination.size(), FloatSize(50, 50)); | 137 EXPECT_EQ(drawInfo.destination.size(), FloatSize(50, 50)); |
138 else | 138 else |
139 EXPECT_TRUE(drawInfo.destination.size().isEmpty()); | 139 EXPECT_TRUE(drawInfo.destination.size().isEmpty()); |
140 } | 140 } |
141 } | 141 } |
142 | 142 |
143 TEST_F(NinePieceImageGridTest, NinePieceImagePainting) | 143 TEST_F(NinePieceImageGridTest, NinePieceImagePainting) |
144 { | 144 { |
145 const struct { | 145 const struct { |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 for (auto& testCase : testCases) { | 232 for (auto& testCase : testCases) { |
233 NinePieceImage ninePiece; | 233 NinePieceImage ninePiece; |
234 ninePiece.setImage(generatedImage()); | 234 ninePiece.setImage(generatedImage()); |
235 ninePiece.setFill(testCase.fill); | 235 ninePiece.setFill(testCase.fill); |
236 ninePiece.setImageSlices(testCase.imageSlices); | 236 ninePiece.setImageSlices(testCase.imageSlices); |
237 ninePiece.setHorizontalRule((ENinePieceImageRule)testCase.horizontalRule
); | 237 ninePiece.setHorizontalRule((ENinePieceImageRule)testCase.horizontalRule
); |
238 ninePiece.setVerticalRule((ENinePieceImageRule)testCase.verticalRule); | 238 ninePiece.setVerticalRule((ENinePieceImageRule)testCase.verticalRule); |
239 | 239 |
240 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, testCase.imageSi
ze, testCase.borderImageArea, testCase.borderWidths); | 240 NinePieceImageGrid grid = NinePieceImageGrid(ninePiece, testCase.imageSi
ze, testCase.borderImageArea, testCase.borderWidths); |
241 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { | 241 for (NinePiece piece = MinPiece; piece < MaxPiece; ++piece) { |
242 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDr
awInfo(piece); | 242 NinePieceImageGrid::NinePieceDrawInfo drawInfo = grid.getNinePieceDr
awInfo(piece, 1); |
243 EXPECT_EQ(testCase.pieces[piece].isDrawable, drawInfo.isDrawable); | 243 EXPECT_EQ(testCase.pieces[piece].isDrawable, drawInfo.isDrawable); |
244 if (!testCase.pieces[piece].isDrawable) | 244 if (!testCase.pieces[piece].isDrawable) |
245 continue; | 245 continue; |
246 | 246 |
247 EXPECT_EQ(testCase.pieces[piece].destination.x(), drawInfo.destinati
on.x()); | 247 EXPECT_EQ(testCase.pieces[piece].destination.x(), drawInfo.destinati
on.x()); |
248 EXPECT_EQ(testCase.pieces[piece].destination.y(), drawInfo.destinati
on.y()); | 248 EXPECT_EQ(testCase.pieces[piece].destination.y(), drawInfo.destinati
on.y()); |
249 EXPECT_EQ(testCase.pieces[piece].destination.width(), drawInfo.desti
nation.width()); | 249 EXPECT_EQ(testCase.pieces[piece].destination.width(), drawInfo.desti
nation.width()); |
250 EXPECT_EQ(testCase.pieces[piece].destination.height(), drawInfo.dest
ination.height()); | 250 EXPECT_EQ(testCase.pieces[piece].destination.height(), drawInfo.dest
ination.height()); |
251 EXPECT_EQ(testCase.pieces[piece].source.x(), drawInfo.source.x()); | 251 EXPECT_EQ(testCase.pieces[piece].source.x(), drawInfo.source.x()); |
252 EXPECT_EQ(testCase.pieces[piece].source.y(), drawInfo.source.y()); | 252 EXPECT_EQ(testCase.pieces[piece].source.y(), drawInfo.source.y()); |
253 EXPECT_EQ(testCase.pieces[piece].source.width(), drawInfo.source.wid
th()); | 253 EXPECT_EQ(testCase.pieces[piece].source.width(), drawInfo.source.wid
th()); |
254 EXPECT_EQ(testCase.pieces[piece].source.height(), drawInfo.source.he
ight()); | 254 EXPECT_EQ(testCase.pieces[piece].source.height(), drawInfo.source.he
ight()); |
255 | 255 |
256 if (testCase.pieces[piece].isCornerPiece) | 256 if (testCase.pieces[piece].isCornerPiece) |
257 continue; | 257 continue; |
258 | 258 |
259 EXPECT_FLOAT_EQ(testCase.pieces[piece].tileScaleHorizontal, drawInfo
.tileScale.width()); | 259 EXPECT_FLOAT_EQ(testCase.pieces[piece].tileScaleHorizontal, drawInfo
.tileScale.width()); |
260 EXPECT_FLOAT_EQ(testCase.pieces[piece].tileScaleVertical, drawInfo.t
ileScale.height()); | 260 EXPECT_FLOAT_EQ(testCase.pieces[piece].tileScaleVertical, drawInfo.t
ileScale.height()); |
261 EXPECT_EQ(testCase.pieces[piece].horizontalRule, drawInfo.tileRule.h
orizontal); | 261 EXPECT_EQ(testCase.pieces[piece].horizontalRule, drawInfo.tileRule.h
orizontal); |
262 EXPECT_EQ(testCase.pieces[piece].verticalRule, drawInfo.tileRule.ver
tical); | 262 EXPECT_EQ(testCase.pieces[piece].verticalRule, drawInfo.tileRule.ver
tical); |
263 } | 263 } |
264 } | 264 } |
265 } | 265 } |
266 | 266 |
267 } // namespace | 267 } // namespace |
268 } // namespace blink | 268 } // namespace blink |
OLD | NEW |