• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import drawing from './@ohos.graphics.drawing';
17import common2D from '@ohos.graphics.common2D';
18import image from '@ohos.multimedia.image';
19
20function testPen() {
21    console.log(`testPen start`);
22    let pen : drawing.Pen = new drawing.Pen();
23    pen.setAlpha(157);
24    console.log(`testPen pen.getAlpha = ${pen.getAlpha()}`);
25    pen.reset();
26    console.log(`testPen pen.getAlpha = ${pen.getAlpha()}`);
27
28    pen.setBlendMode(drawing.BlendMode.CLEAR)
29    pen.setAlpha(179);
30    let pen2 : drawing.Pen = new drawing.Pen(pen);
31    console.log(`testPen pen.getAlpha = ${pen.getAlpha()}`);
32    console.log(`testPen end`);
33}
34
35function testBrush() {
36    console.log(`testBrush start`);
37    let brush : drawing.Brush = new drawing.Brush();
38    brush.setAlpha(157);
39    console.log(`testBrush brush.getAlpha = ${brush.getAlpha()}`);
40    brush.reset();
41    console.log(`testBrush brush.getAlpha = ${brush.getAlpha()}`);
42
43    brush.setBlendMode(drawing.BlendMode.CLEAR)
44    brush.setAlpha(179);
45    let brush2 : drawing.Brush = new drawing.Brush(brush);
46    console.log(`testBrush brush.getAlpha = ${brush2.getAlpha()}`);
47    console.log(`testBrush end`);
48}
49
50function testColorFilter() {
51    console.log(`testColorFilter start`);
52
53    let pen : drawing.Pen = new drawing.Pen();
54    let brush : drawing.Brush = new drawing.Brush();
55    let colorFilter1 : drawing.ColorFilter =
56        drawing.ColorFilter.createBlendModeColorFilter(0x85957, drawing.BlendMode.CLEAR)
57    brush.setColorFilter(colorFilter1)
58    pen.setColorFilter(colorFilter1)
59
60    let color: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 };
61    let colorFilter2 : drawing.ColorFilter =
62        drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.CLEAR)
63    brush.setColorFilter(colorFilter2)
64    pen.setColorFilter(colorFilter2)
65
66    console.log(`testColorFilter end`);
67}
68
69function testFont() {
70    console.log(`testFont start`);
71    let font : drawing.Font = new drawing.Font();
72    font.setSize(9);
73    console.log(`testFont font.getSize = ${font.getSize()}`);
74    let fontMetrics = font.getMetrics();
75    if (fontMetrics == null) {
76        console.error(`testFont fontMetrics == null`);
77        return;
78    }
79    console.log(`testFont fontMetrics = ${fontMetrics}`);
80    console.log(`testFont fontMetrics.top = ${fontMetrics.top}`);
81    console.log(`testFont fontMetrics.ascent = ${fontMetrics.ascent}`);
82
83    let typeface : drawing.Typeface = drawing.Typeface.makeFromFile('/system/fonts/HarmonyOS_Sans.ttf');
84    if (typeface == null) {
85        console.error(`testFont typeface == null`);
86        return;
87    };
88    font.setTypeface(typeface);
89    let typeface1 = font.getTypeface();
90    if (typeface1 == null) {
91        console.error(`testFont typeface1 == null`);
92        return;
93    }
94    console.log(`testFont typeface1.getFamilyName = ${typeface1.getFamilyName()}`);
95    console.log(`testFont end`);
96}
97
98function testTypeface() {
99    console.log(`testTypeface start`);
100    let ta : drawing.TypefaceArguments = new drawing.TypefaceArguments();
101    let typeface0 : drawing.Typeface = drawing.Typeface.makeFromFile('/system/fonts/HarmonyOS_Sans.ttf');
102    let typeface : drawing.Typeface = drawing.Typeface.makeFromFileWithArguments('/system/fonts/HarmonyOS_Sans.ttf',
103        ta);
104    if (typeface == null) {
105        console.error(`testTypeface typeface == null`);
106        return;
107    }
108    console.log(`testTypeface typeface.getFamilyName = ${typeface.getFamilyName()}`);
109    console.log(`testTypeface end`);
110}
111
112function testErrorCode() {
113    console.log(`testErrorCode start`);
114    let pen : drawing.Pen = new drawing.Pen();
115    try {
116        pen.setAlpha(157);
117        console.log(`testErrorCode pen.setAlpha(157) success`);
118    } catch (e: Error) {
119        console.log(`testErrorCode pen.setAlpha(157) failed, err.msg = ${e.message}`);
120    }
121    console.log(`testErrorCode pen.getAlpha = ${pen.getAlpha()}`);
122    try {
123        pen.setAlpha(-10);
124        console.log(`testErrorCode pen.setAlpha(-10) success`);
125    } catch (e: Error) {
126        console.log(`testErrorCode pen.setAlpha(-10) failed, err.msg = ${e.message}`);
127    }
128    console.log(`testErrorCode pen.getAlpha = ${pen.getAlpha()}`);
129    try {
130        pen.setAlpha(321);
131        console.log(`testErrorCode pen.setAlpha(321) success`);
132    } catch (e: Error) {
133        console.log(`testErrorCode pen.setAlpha(321) failed, err.msg = ${e.message}`);
134    }
135    console.log(`testErrorCode pen.getAlpha = ${pen.getAlpha()}`);
136    console.log(`testErrorCode end`);
137}
138
139function testSaveRestore(canvas: drawing.Canvas) {
140  let count: number = canvas.save();
141  let saveCount: number = canvas.getSaveCount();
142  console.log(`testSaveRestore save: ${count} getSaveCount: ${saveCount}`);
143
144  let sacveLayerCount: number = canvas.saveLayer();
145  console.log(`testSaveRestore sacveLayerCount: ${sacveLayerCount}`);
146  canvas.restore();
147
148  let rect: common2D.Rect = { left: 10, top: 10, right: 100, bottom: 100 };
149  saveCount = canvas.saveLayer(rect);
150  console.log(`testSaveRestore sacveLayerCount: ${sacveLayerCount}`);
151  canvas.restore();
152
153  let brush : drawing.Brush = new drawing.Brush();
154  saveCount = canvas.saveLayer(rect, brush);
155  console.log(`testSaveRestore sacveLayerCount: ${sacveLayerCount}`);
156  canvas.restore();
157
158  saveCount = canvas.saveLayer(null, null);
159  saveCount = canvas.saveLayer(null, brush);
160  saveCount = canvas.saveLayer(rect, null);
161  console.log(`testSaveRestore sacveLayerCount: ${sacveLayerCount}`);
162  canvas.restore();
163  canvas.restore();
164  canvas.restore();
165
166  canvas.restore();
167  saveCount = canvas.getSaveCount();
168  console.log(`testSaveRestore getSaveCount: ${saveCount}`);
169}
170
171function testDrawImage(canvas: drawing.Canvas) {
172  const opts: image.InitializationOptions = {
173    size: { width: 100, height: 100 },
174    editable: true,
175    pixelFormat: image.PixelMapFormat.BGRA_8888,
176  };
177  let pixelMap: image.PixelMap = image.createPixelMapSync(opts);
178  let rect: common2D.Rect = { left: 50, top: 50, right: 150, bottom: 150 };
179  canvas.drawImageRect(pixelMap, rect)
180  let samplingOptions = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_LINEAR);
181  canvas.drawImageRect(pixelMap, rect, samplingOptions)
182
183  let verts: number[] = [100, 100, 200, 100, 150, 200, 200, 200];
184  let colors: number[] = [0x00ff0088, 0x00ff0088, 0x00ff0088, 0x00ff0088];
185  canvas.drawPixelMapMesh(pixelMap, 1, 1, verts, 0, colors, 0);
186}
187
188function testCanvas() {
189  console.log(`testCanvas start`);
190  const opts: image.InitializationOptions = {
191    size: { width: 480, height: 360 },
192    editable: true,
193    pixelFormat: image.PixelMapFormat.BGRA_8888,
194  };
195  let pixelMap: image.PixelMap = image.createPixelMapSync(opts);
196  if (pixelMap == undefined) {
197    console.log('Create image.createPixelMapSync failed');
198    return;
199  }
200  console.log('Create image.createPixelMapSync success');
201
202  let canvas: drawing.Canvas = new drawing.Canvas(pixelMap)
203  testSaveRestore(canvas)
204
205  let pen: drawing.Pen = new drawing.Pen()
206  let brush : drawing.Brush = new drawing.Brush();
207  canvas.attachPen(pen)
208  canvas.attachBrush(brush)
209
210  let rect: common2D.Rect = { left: 10, top: 10, right: 100, bottom: 100 };
211  canvas.drawRect(rect)
212  canvas.drawRect(100, 100, 120, 150)
213
214  canvas.rotate(60, 10, 10)
215
216  testDrawImage(canvas)
217
218  canvas.detachPen()
219  canvas.detachBrush()
220  console.log(`testCanvas end`);
221}
222
223function testLattice() {
224    console.log(`testLattice start`);
225    let xDivs : number[] = [1, 2, 4];
226    let yDivs : number[] = [1, 2, 4];
227    let fBounds: common2D.Rect = { left: 10, top: 10, right: 100, bottom: 100 };
228    let fRectTypes : drawing.RectType[] = [
229        drawing.RectType.DEFAULT, drawing.RectType.DEFAULT,
230        drawing.RectType.DEFAULT, drawing.RectType.DEFAULT,
231        drawing.RectType.TRANSPARENT, drawing.RectType.TRANSPARENT,
232        drawing.RectType.TRANSPARENT, drawing.RectType.TRANSPARENT,
233        drawing.RectType.FIXEDCOLOR, drawing.RectType.FIXEDCOLOR,
234        drawing.RectType.FIXEDCOLOR, drawing.RectType.FIXEDCOLOR,
235        drawing.RectType.TRANSPARENT, drawing.RectType.TRANSPARENT,
236        drawing.RectType.TRANSPARENT, drawing.RectType.TRANSPARENT ]
237    let colorArray : number[] = [0xffffff,0x444444,0x999999,0xffffff,0x444444,0x999999,0xffffff,0x444444,
238        0x999999,0x444444,0x999999,0xffffff,0x444444,0x999999,0xffffff,0x444444];
239    let color : common2D.Color = { alpha: 0xFF, red: 0x55, green: 0xFF, blue: 0x44 };
240    let colorArray1 :common2D.Color[] = [
241        color,color,color,color,color,color,color,color,color,color,color,color,color,color,color,color]
242    let lattice1 : drawing.Lattice = drawing.Lattice.createImageLattice(
243        xDivs, yDivs, 3, 3, fBounds, fRectTypes, colorArray);
244    let lattice2 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3);
245    let lattice3 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, fBounds);
246    let lattice4 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, fBounds, fRectTypes);
247    let lattice5 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, null)
248    let lattice6 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, null, null);
249    let lattice7 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, null, null, null);
250    let lattice8 : drawing.Lattice = drawing.Lattice.createImageLattice(
251        xDivs, yDivs, 3, 3, null, fRectTypes, colorArray);
252    let lattice9 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, fBounds, null, colorArray);
253    let lattice10 : drawing.Lattice = drawing.Lattice.createImageLattice(
254        xDivs, yDivs, 3, 3, fBounds, fRectTypes, null);
255    let lattice11 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, null, null, colorArray);
256    let lattice12 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, fBounds, null, null);
257    let lattice13 : drawing.Lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3, null, fRectTypes, null);
258    let lattice14 : drawing.Lattice = drawing.Lattice.createImageLattice(
259        xDivs, yDivs, 3, 3, fBounds, fRectTypes, colorArray1);
260    console.log(`testLattice end`);
261}
262
263function testMatrix() {
264    console.log(`testMatrix start`);
265    let matrix : drawing.Matrix = new drawing.Matrix();
266    matrix.setTranslation(2.0, 3.0);
267    let matrix2 : drawing.Matrix = new drawing.Matrix(matrix);
268    matrix.reset();
269    console.log(`testErrorCode matrix.getValue2 = ${matrix.getValue(2)} getValue3 = ${matrix.getValue(5)}`)
270    console.log(`testErrorCode matrix2.getValue2 = ${matrix2.getValue(2)} getValue3 = ${matrix2.getValue(5)}`)
271    console.log(`testMatrix end`);
272}
273
274function testPath() {
275    console.log(`testPath start`);
276    let path : drawing.Path = new drawing.Path();
277    path.arcTo(1, 2, 3, 4, 5, 6);
278    path.reset();
279    let path2 : drawing.Path = new drawing.Path(path);
280    let pathIterator : drawing.PathIterator = new drawing.PathIterator(path);
281    console.log(`testPath end`);
282}
283
284function testRegion() {
285    console.log(`testRegion start`);
286    let region : drawing.Region = new drawing.Region();
287    let region2 : drawing.Region = new drawing.Region(region);
288    let region3 : drawing.Region = new drawing.Region(1, 2, 3, 4);
289    console.log(`testRegion end`);
290}
291
292function testRroundRect() {
293    console.log(`testRroundRect start`);
294    let rect: common2D.Rect = { left: 10, top: 10, right: 100, bottom: 100 };
295    let rrect : drawing.RoundRect = new drawing.RoundRect(rect, 3, 3);
296    let rrect2 : drawing.RoundRect = new drawing.RoundRect(rrect);
297    console.log(`testRroundRect end`);
298}
299
300function main() {
301    testPen();
302    testBrush();
303    testColorFilter();
304    testFont();
305    testTypeface();
306    testErrorCode();
307    testMatrix();
308    testPath();
309    testRegion();
310    testRroundRect();
311    testCanvas();
312    testLattice();
313}