1+ require ( '../../../../src/common/overlay/levelRenderer/Painter' ) ;
2+
3+ describe ( 'Painter' , function ( ) {
4+ var testDiv , storage ;
5+ beforeAll ( function ( ) {
6+ testDiv = window . document . createElement ( "div" ) ;
7+ testDiv . setAttribute ( "id" , "group" ) ;
8+ testDiv . style . styleFloat = "left" ;
9+ testDiv . style . marginLeft = "8px" ;
10+ testDiv . style . marginTop = "50px" ;
11+ testDiv . style . width = "400px" ;
12+ testDiv . style . height = "400px" ;
13+ testDiv . style . border = "1px solid #000000" ;
14+ window . document . body . appendChild ( testDiv ) ;
15+ } ) ;
16+ beforeEach ( function ( ) {
17+ storage = new SuperMap . LevelRenderer . Storage ( ) ;
18+ storage . addRoot ( new SuperMap . LevelRenderer . Shape . SmicStar ( {
19+ style : {
20+ x : 200 ,
21+ y : 200 ,
22+ r : 150 ,
23+ n : 5
24+ } ,
25+ } ) ) ;
26+ } ) ;
27+ afterEach ( function ( ) {
28+ storage . dispose ( ) ;
29+ } ) ;
30+ afterAll ( function ( ) {
31+ window . document . body . removeChild ( testDiv ) ;
32+ } ) ;
33+
34+ it ( 'constructor, destroy, refreshHover, clearHover, getWidth, getHeight' , function ( ) {
35+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
36+ painter . refreshHover ( ) ;
37+ expect ( painter ) . not . toBeNull ( ) ;
38+ expect ( painter . root . id ) . toEqual ( "group" ) ;
39+ expect ( painter . root . nodeName ) . toEqual ( "DIV" ) ;
40+ expect ( painter . _bgDom ) . not . toBeNull ( ) ;
41+ expect ( painter . _bgDom . nodeName ) . toEqual ( "DIV" ) ;
42+ expect ( painter . _height ) . toEqual ( 400 ) ;
43+ expect ( painter . _width ) . toEqual ( 400 ) ;
44+ expect ( painter . _layers ) . not . toBeNull ( ) ;
45+ expect ( painter . storage ) . not . toBeNull ( ) ;
46+ expect ( painter . shapeToImage ) . not . toBeNull ( ) ;
47+ expect ( painter . _layerConfig ) . not . toBeNull ( ) ;
48+ expect ( painter . _zlevelList ) . not . toBeNull ( ) ;
49+ var width = painter . getWidth ( ) ;
50+ var height = painter . getHeight ( ) ;
51+ expect ( width ) . toEqual ( 400 ) ;
52+ expect ( height ) . toEqual ( 400 ) ;
53+ painter . destroy ( ) ;
54+ expect ( painter . root ) . toBeNull ( ) ;
55+ expect ( painter . _bgDom ) . toBeNull ( ) ;
56+ expect ( painter . storage ) . toBeNull ( ) ;
57+ expect ( painter . _zlevelList ) . toBeNull ( ) ;
58+ expect ( painter . _layerConfig ) . toBeNull ( ) ;
59+ expect ( painter . shapeToImage ) . toBeNull ( ) ;
60+ } ) ;
61+
62+ //渲染
63+ it ( 'render' , function ( ) {
64+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
65+ spyOn ( painter , 'render' ) . and . callThrough ( ) ;
66+ painter . render ( ) ;
67+ expect ( painter . render ) . toHaveBeenCalled ( ) ;
68+ expect ( painter . storage . _shapeList . length ) . toEqual ( 1 ) ;
69+ expect ( painter . storage . _shapeList [ 0 ] . type ) . toEqual ( "smicstar" ) ;
70+ expect ( painter . _layers . hover ) . not . toBeNull ( ) ;
71+ expect ( painter . _zlevelList [ 0 ] ) . toEqual ( 0 ) ;
72+ painter . destroy ( ) ;
73+ } ) ;
74+
75+ // 不强制绘制所有 shape
76+ it ( 'refresh' , function ( ) {
77+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
78+ spyOn ( painter , 'refresh' ) . and . callThrough ( ) ;
79+ painter . refresh ( function ( ) {
80+ painter . _zlevelList [ 0 ] = "test_refresh" ;
81+ } ) ;
82+ expect ( painter . refresh ) . toHaveBeenCalled ( ) ;
83+ expect ( painter . storage . _shapeList . length ) . toEqual ( 1 ) ;
84+ expect ( painter . storage . _shapeList [ 0 ] . type ) . toEqual ( "smicstar" ) ;
85+ expect ( painter . _layers . hover ) . not . toBeNull ( ) ;
86+ expect ( painter . _zlevelList [ 0 ] ) . toEqual ( "test_refresh" ) ;
87+ painter . destroy ( ) ;
88+ } ) ;
89+
90+ // 强制绘制所有 shape
91+ it ( 'refresh_paintAll' , function ( ) {
92+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
93+ spyOn ( painter , 'refresh' ) . and . callThrough ( ) ;
94+ painter . refresh ( function ( ) {
95+ painter . _zlevelList [ 0 ] = "test_refresh" ;
96+ } , true ) ;
97+ expect ( painter . refresh ) . toHaveBeenCalled ( ) ;
98+ expect ( painter . storage . _shapeList . length ) . toEqual ( 1 ) ;
99+ expect ( painter . storage . _shapeList [ 0 ] . type ) . toEqual ( "smicstar" ) ;
100+ expect ( painter . _layers . hover ) . not . toBeNull ( ) ;
101+ expect ( painter . _zlevelList [ 0 ] ) . toEqual ( "test_refresh" ) ;
102+ painter . destroy ( ) ;
103+ } ) ;
104+
105+ //按列表绘制图形
106+ it ( '_paintList' , function ( ) {
107+ storage . addRoot ( new SuperMap . LevelRenderer . Shape . SmicPolygon ( {
108+ style : { pointList : [ [ 0 , 0 ] , [ 100 , 0 ] , [ 100 , 100 ] , [ 0 , 100 ] ] } ,
109+ zlevel : 1
110+ } ) ) ;
111+ storage . addRoot ( new SuperMap . LevelRenderer . Shape . SmicText ( {
112+ style : {
113+ x : 200 ,
114+ y : 200 ,
115+ textFont : '14px Arial' ,
116+ text : 'Label'
117+ } ,
118+ zlevel : 2
119+ } ) ) ;
120+ storage . addRoot ( new SuperMap . LevelRenderer . Shape . SmicBrokenLine ( {
121+ style : {
122+ pointList : [ [ 0 , 0 ] , [ 100 , 100 ] , [ 100 , 0 ] ]
123+ } ,
124+ } ) ) ;
125+ var list = storage . getShapeList ( true ) ;
126+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
127+ expect ( painter . _zlevelList . length ) . toEqual ( 0 ) ;
128+ expect ( painter . storage . _shapeList . length ) . toEqual ( 4 ) ;
129+ expect ( painter . storage . _shapeList [ 0 ] . type ) . toEqual ( "smicstar" ) ;
130+ expect ( painter . storage . _shapeList [ 1 ] . type ) . toEqual ( "smicbroken-line" ) ;
131+ expect ( painter . storage . _shapeList [ 2 ] . type ) . toEqual ( "smicpolygon" ) ;
132+ expect ( painter . storage . _shapeList [ 3 ] . type ) . toEqual ( "smictext" ) ;
133+ painter . render ( ) ;
134+ painter . _paintList ( list , true ) ;
135+ expect ( painter ) . not . toBeNull ( ) ;
136+ expect ( painter . _zlevelList . length ) . toEqual ( 3 ) ;
137+ expect ( painter . _zlevelList [ 0 ] ) . toEqual ( 0 ) ;
138+ expect ( painter . _zlevelList [ 1 ] ) . toEqual ( 1 ) ;
139+ expect ( painter . _zlevelList [ 2 ] ) . toEqual ( 2 ) ;
140+ painter . destroy ( ) ;
141+ } ) ;
142+
143+ it ( 'getLayer, getLayers' , function ( ) {
144+ storage . addRoot ( new SuperMap . LevelRenderer . Shape . SmicPolygon ( {
145+ style : { pointList : [ [ 0 , 0 ] , [ 100 , 0 ] , [ 100 , 100 ] , [ 0 , 100 ] ] } ,
146+ zlevel : 2
147+ } ) ) ;
148+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
149+ painter . render ( ) ;
150+ var layer = painter . getLayer ( 0 ) ;
151+ var layers = painter . getLayers ( ) ;
152+ expect ( layer ) . not . toBeNull ( ) ;
153+ expect ( layer . CLASS_NAME ) . toEqual ( "SuperMap.LevelRenderer.Painter.Layer" ) ;
154+ expect ( layer . painter ) . not . toBeNull ( ) ;
155+ expect ( layer . painter . storage . _shapeList . length ) . toEqual ( 2 ) ;
156+ expect ( layer . painter . storage . _shapeList [ 0 ] . type ) . toEqual ( "smicstar" ) ;
157+ expect ( layer . painter . storage . _shapeList [ 1 ] . type ) . toEqual ( "smicpolygon" ) ;
158+ expect ( layers ) . not . toBeNull ( ) ;
159+ expect ( layers [ 0 ] ) . not . toBeNull ( ) ;
160+ expect ( layers [ 0 ] . CLASS_NAME ) . toEqual ( "SuperMap.LevelRenderer.Painter.Layer" ) ;
161+ expect ( layers [ 0 ] . painter ) . not . toBeNull ( ) ;
162+ expect ( layers . hover ) . not . toBeNull ( ) ;
163+ expect ( layers . hover . CLASS_NAME ) . toEqual ( "SuperMap.LevelRenderer.Painter.Layer" ) ;
164+ expect ( layers . hover . needTransform ) . toBeFalsy ( ) ;
165+ painter . destroy ( ) ;
166+ } ) ;
167+
168+ it ( 'refreshShapes, clear' , function ( ) {
169+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
170+ var list = storage . getShapeList ( true ) ;
171+ painter . refreshShapes ( list ) ;
172+ expect ( painter ) . not . toBeNull ( ) ;
173+ expect ( painter . _layers ) . not . toBeNull ( ) ;
174+ expect ( painter . _layers [ 0 ] ) . not . toBeNull ( ) ;
175+ expect ( painter . _layers . hover ) . not . toBeNull ( ) ;
176+ painter . _layers [ 0 ] . motionBlur = true ;
177+ painter . _layers [ 0 ] . clearColor = "#000000" ;
178+ painter . _layers [ 0 ] . config = { clearColor : "#657871" } ;
179+ spyOn ( painter . _layers [ 0 ] , 'clear' ) . and . callThrough ( ) ;
180+ spyOn ( painter . _layers [ 0 ] . ctx , 'fillRect' ) . and . callThrough ( ) ;
181+ spyOn ( painter . _layers [ 0 ] . ctx , 'drawImage' ) . and . callThrough ( ) ;
182+ painter . clear ( ) ;
183+ expect ( painter . _layers [ 0 ] . clear ) . toHaveBeenCalled ( ) ;
184+ expect ( painter . _layers [ 0 ] . ctx . fillRect ) . toHaveBeenCalled ( ) ;
185+ expect ( painter . _layers [ 0 ] . ctx . drawImage ) . toHaveBeenCalled ( ) ;
186+ painter . destroy ( ) ;
187+ } ) ;
188+
189+ //修改指定 zlevel 的绘制参数
190+ it ( 'modLayer' , function ( ) {
191+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
192+ painter . render ( ) ;
193+ var config = {
194+ clearColor : 0 ,
195+ motionBlur : false ,
196+ lastFrameAlpha : 0.7 ,
197+ position : [ 5 ] ,
198+ rotation : [ 3 ] ,
199+ } ;
200+ spyOn ( painter , 'modLayer' ) . and . callThrough ( ) ;
201+ painter . modLayer ( 0 , config ) ;
202+ expect ( painter . modLayer ) . toHaveBeenCalledWith ( 0 , config ) ;
203+ expect ( painter ) . not . toBeNull ( ) ;
204+ expect ( painter . _layerConfig [ 0 ] . clearColor ) . toEqual ( 0 ) ;
205+ expect ( painter . _layerConfig [ 0 ] . lastFrameAlpha ) . toEqual ( 0.7 ) ;
206+ expect ( painter . _layerConfig [ 0 ] . motionBlur ) . toBeFalsy ( ) ;
207+ expect ( painter . _layerConfig [ 0 ] . position [ 0 ] ) . toEqual ( 5 ) ;
208+ expect ( painter . _layerConfig [ 0 ] . rotation [ 0 ] ) . toEqual ( 3 ) ;
209+ painter . destroy ( ) ;
210+ } ) ;
211+
212+
213+ it ( 'delLayer, clearHover' , function ( ) {
214+ storage . addRoot ( new SuperMap . LevelRenderer . Shape . SmicPolygon ( {
215+ style : { pointList : [ [ 0 , 0 ] , [ 100 , 0 ] , [ 100 , 100 ] , [ 0 , 100 ] ] } ,
216+ zlevel : 1
217+ } ) ) ;
218+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
219+ spyOn ( painter , 'delLayer' ) . and . callThrough ( ) ;
220+ painter . delLayer ( 1 ) ;
221+ painter . render ( ) ;
222+ expect ( painter . _layers [ 0 ] ) . not . toBeNull ( ) ;
223+ expect ( painter . _layers [ 1 ] ) . not . toBeNull ( ) ;
224+ painter . delLayer ( 0 ) ;
225+ expect ( painter . delLayer ) . toHaveBeenCalledWith ( 1 ) ;
226+ expect ( painter . delLayer ) . toHaveBeenCalledWith ( 0 ) ;
227+ expect ( painter . _layers [ 1 ] ) . not . toBeNull ( ) ;
228+ painter . clearLayer ( 1 ) ;
229+ expect ( painter ) . not . toBeNull ( ) ;
230+ painter . destroy ( ) ;
231+ } ) ;
232+
233+ // 区域大小变化后重绘。
234+ it ( 'resize' , function ( ) {
235+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
236+ painter . _width = 500 ;
237+ painter . resize ( ) ;
238+ expect ( painter ) . not . toBeNull ( ) ;
239+ expect ( painter . _width ) . toEqual ( 400 ) ;
240+ painter . destroy ( ) ;
241+ } ) ;
242+
243+
244+ //获取 Hover 层的 Dom。
245+ it ( 'getDomHover' , function ( ) {
246+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
247+ var dom = painter . getDomHover ( ) ;
248+ expect ( dom ) . not . toBeNull ( ) ;
249+ expect ( dom . nodeName ) . toEqual ( "CANVAS" ) ;
250+ expect ( dom . width ) . toEqual ( 400 ) ;
251+ expect ( dom . height ) . toEqual ( 400 ) ;
252+ painter . destroy ( ) ;
253+ } ) ;
254+
255+ //图像导出
256+ it ( 'toDataURL' , function ( ) {
257+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
258+ var image = painter . toDataURL ( "PNG" , "#fff" , { } ) ;
259+ expect ( image ) . not . toBeNull ( ) ;
260+ expect ( image ) . toContain ( "image/png" ) ;
261+ painter . destroy ( ) ;
262+ } ) ;
263+
264+ it ( '_shapeToImage' , function ( ) {
265+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
266+ var list = storage . getShapeList ( true ) ;
267+ var shape = list [ 0 ] ;
268+ var devicePixelRatio = SuperMap . LevelRenderer . Painter . devicePixelRatio ;
269+ var imgShape = painter . _shapeToImage ( 'testId' , shape , 400 , 400 , devicePixelRatio ) ;
270+ expect ( imgShape ) . not . toBeNull ( ) ;
271+ expect ( imgShape . id ) . toEqual ( "testId" ) ;
272+ expect ( imgShape . type ) . toEqual ( "smicimage" ) ;
273+ expect ( imgShape . style . image ) . not . toBeNull ( ) ;
274+ expect ( imgShape . style . image . nodeName ) . toEqual ( "CANVAS" ) ;
275+ expect ( imgShape . style . x ) . toEqual ( 0 ) ;
276+ expect ( imgShape . style . y ) . toEqual ( 0 ) ;
277+ painter . destroy ( ) ;
278+ } ) ;
279+
280+ it ( 'updateHoverLayer' , function ( ) {
281+ var painter = new SuperMap . LevelRenderer . Painter ( testDiv , storage ) ;
282+ var list = storage . getShapeList ( true ) ;
283+ painter . updateHoverLayer ( list ) ;
284+ expect ( painter ) . not . toBeNull ( ) ;
285+ expect ( painter . root . id ) . toEqual ( "group" ) ;
286+ expect ( painter . root . nodeName ) . toEqual ( "DIV" ) ;
287+ expect ( painter . _bgDom ) . not . toBeNull ( ) ;
288+ expect ( painter . _bgDom . nodeName ) . toEqual ( "DIV" ) ;
289+ expect ( painter . _height ) . toEqual ( 400 ) ;
290+ expect ( painter . _width ) . toEqual ( 400 ) ;
291+ expect ( painter . _layers ) . not . toBeNull ( ) ;
292+ expect ( painter . storage ) . not . toBeNull ( ) ;
293+ expect ( painter . shapeToImage ) . not . toBeNull ( ) ;
294+ expect ( painter . _layerConfig ) . not . toBeNull ( ) ;
295+ expect ( painter . _zlevelList ) . not . toBeNull ( ) ;
296+ painter . destroy ( ) ;
297+ } ) ;
298+ } ) ;
0 commit comments