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}