2013-09-08 11:55:03 +08:00
suite ( 'Label' , function ( ) {
// ======================================================
2015-02-09 07:29:31 +08:00
test ( 'add label' , function ( ) {
2013-09-09 12:36:54 +08:00
var stage = addStage ( ) ;
2015-01-27 15:07:51 +08:00
var layer = new Konva . Layer ( ) ;
2013-09-08 11:55:03 +08:00
2015-01-27 15:07:51 +08:00
var label = new Konva . Label ( {
2013-09-08 11:55:03 +08:00
x : 100 ,
2013-09-21 05:08:51 +08:00
y : 100 ,
2013-09-08 11:55:03 +08:00
draggable : true
} ) ;
// add a tag to the label
2015-01-27 15:07:51 +08:00
label . add ( new Konva . Tag ( {
2013-09-08 11:55:03 +08:00
fill : '#bbb' ,
shadowColor : 'black' ,
shadowBlur : 10 ,
shadowOffset : [ 10 , 10 ] ,
shadowOpacity : 0.2 ,
lineJoin : 'round' ,
pointerDirection : 'up' ,
pointerWidth : 20 ,
pointerHeight : 20 ,
cornerRadius : 5
} ) ) ;
// add text to the label
2015-01-27 15:07:51 +08:00
label . add ( new Konva . Text ( {
2013-09-08 11:55:03 +08:00
text : '' ,
fontSize : 50 ,
//fontFamily: 'Calibri',
//fontStyle: 'normal',
2013-09-21 05:08:51 +08:00
lineHeight : 1.2 ,
2013-09-08 11:55:03 +08:00
//padding: 10,
fill : 'green'
} ) ) ;
layer . add ( label ) ;
stage . add ( layer ) ;
2013-09-21 05:08:51 +08:00
2013-09-08 11:55:03 +08:00
label . getText ( ) . setFontSize ( 100 ) ;
label . getText ( ) . setFontSize ( 50 ) ;
2013-09-21 05:08:51 +08:00
2013-09-08 11:55:03 +08:00
label . getText ( ) . setText ( 'Hello big world' ) ;
layer . draw ( ) ;
2013-09-21 05:08:51 +08:00
2013-09-08 11:55:03 +08:00
assert . equal ( label . getType ( ) , 'Group' ) ;
assert . equal ( label . getClassName ( ) , 'Label' ) ;
2013-09-21 05:08:51 +08:00
// use relaxed trace because text can be a slightly different size in different browsers,
2013-09-08 14:55:36 +08:00
// resulting in slightly different tag dimensions
2013-09-16 13:59:09 +08:00
var relaxedTrace = layer . getContext ( ) . getTrace ( true ) ;
2015-01-27 14:21:02 +08:00
// console.log(relaxedTrace);
// assert.equal(relaxedTrace, 'clearRect();save();save();globalAlpha;shadowColor;shadowBlur;shadowOffsetX;shadowOffsetY;drawImage();restore();drawImage();restore();save();transform();font;textBaseline;textAlign;save();translate();save();fillStyle;fillText();restore();translate();restore();restore();clearRect();save();save();globalAlpha;shadowColor;shadowBlur;shadowOffsetX;shadowOffsetY;drawImage();restore();drawImage();restore();save();transform();font;textBaseline;textAlign;save();translate();save();fillStyle;fillText();restore();translate();restore();restore();');
2013-09-26 16:39:50 +08:00
2013-09-08 11:55:03 +08:00
} ) ;
// ======================================================
test ( 'create label from json' , function ( ) {
2013-09-09 12:36:54 +08:00
var stage = addStage ( ) ;
2013-09-08 11:55:03 +08:00
var json = '{"attrs":{"x":100,"y":100,"draggable":true},"className":"Label","children":[{"attrs":{"fill":"#bbb","stroke":"#333","shadowColor":"black","shadowBlur":10,"shadowOffsetX":10,"shadowOffsetY":10,"shadowOpacity":0.2,"lineJoin":"round","pointerDirection":"up","pointerWidth":20,"pointerHeight":20,"cornerRadius":5,"x":-151.5,"y":20,"width":303,"height":60},"className":"Tag"},{"attrs":{"text":"Hello big world","fontSize":50,"lineHeight":1.2,"fill":"green","width":"auto","height":"auto","x":-151.5,"y":20},"className":"Text"}]}' ;
2015-01-27 15:07:51 +08:00
var layer = new Konva . Layer ( ) ;
2013-09-08 11:55:03 +08:00
2015-01-27 15:07:51 +08:00
var label = Konva . Node . create ( json ) ;
2013-09-08 11:55:03 +08:00
layer . add ( label ) ;
stage . add ( layer ) ;
} ) ;
2014-04-25 19:17:12 +08:00
test ( 'find label class' , function ( ) {
var stage = addStage ( ) ;
2015-01-27 15:07:51 +08:00
var layer = new Konva . Layer ( ) ;
2014-04-25 19:17:12 +08:00
2015-01-27 15:07:51 +08:00
var label = new Konva . Label ( {
2014-04-25 19:17:12 +08:00
x : 100 ,
2014-08-21 07:51:06 +08:00
y : 100
2014-04-25 19:17:12 +08:00
} ) ;
// add a tag to the label
2015-01-27 15:07:51 +08:00
label . add ( new Konva . Tag ( {
2014-04-25 19:17:12 +08:00
fill : '#bbb'
} ) ) ;
// add text to the label
2015-01-27 15:07:51 +08:00
label . add ( new Konva . Text ( {
2014-04-25 19:17:12 +08:00
text : 'Test Label' ,
fill : 'green'
} ) ) ;
layer . add ( label ) ;
stage . add ( layer ) ;
assert . equal ( stage . find ( 'Label' ) [ 0 ] , label ) ;
} ) ;
2015-08-28 11:11:10 +08:00
test . skip ( 'cache label' , function ( ) {
2015-02-12 15:10:36 +08:00
var stage = addStage ( ) ;
var layer = new Konva . Layer ( ) ;
// tooltip
var tooltip = new Konva . Label ( {
x : 170 ,
y : 75 ,
opacity : 0.75
} ) ;
tooltip . add ( new Konva . Tag ( {
fill : 'black' ,
pointerDirection : 'down' ,
pointerWidth : 10 ,
pointerHeight : 10 ,
lineJoin : 'round' ,
shadowColor : 'black' ,
shadowBlur : 10 ,
shadowOffset : 10 ,
shadowOpacity : 0.5
} ) ) ;
tooltip . add ( new Konva . Text ( {
text : 'Tooltip pointing down' ,
fontFamily : 'Calibri' ,
fontSize : 18 ,
padding : 5 ,
fill : 'white'
} ) ) ;
var tooltipUp = new Konva . Label ( {
x : 170 ,
y : 75 ,
opacity : 0.75
} ) ;
tooltipUp . add ( new Konva . Tag ( {
fill : 'black' ,
pointerDirection : 'up' ,
pointerWidth : 10 ,
pointerHeight : 10 ,
lineJoin : 'round' ,
shadowColor : 'black' ,
shadowBlur : 10 ,
shadowOffset : 10 ,
shadowOpacity : 0.5
} ) ) ;
tooltipUp . add ( new Konva . Text ( {
text : 'Tooltip pointing up' ,
fontFamily : 'Calibri' ,
fontSize : 18 ,
padding : 5 ,
fill : 'white'
} ) ) ;
// label with left pointer
var labelLeft = new Konva . Label ( {
x : 20 ,
y : 130 ,
opacity : 0.75
} ) ;
labelLeft . add ( new Konva . Tag ( {
fill : 'green' ,
pointerDirection : 'left' ,
pointerWidth : 30 ,
pointerHeight : 28 ,
lineJoin : 'round'
} ) ) ;
labelLeft . add ( new Konva . Text ( {
text : 'Label pointing left' ,
fontFamily : 'Calibri' ,
fontSize : 18 ,
padding : 5 ,
fill : 'white'
} ) ) ;
// label with left pointer
var labelRight = new Konva . Label ( {
x : 160 ,
y : 170 ,
offsetX : 20 ,
opacity : 0.75
} ) ;
labelRight . add ( new Konva . Tag ( {
fill : 'green' ,
pointerDirection : 'right' ,
pointerWidth : 20 ,
pointerHeight : 28 ,
lineJoin : 'round'
} ) ) ;
labelRight . add ( new Konva . Text ( {
text : 'Label right' ,
fontFamily : 'Calibri' ,
fontSize : 18 ,
padding : 5 ,
fill : 'white'
} ) ) ;
// simple label
var simpleLabel = new Konva . Label ( {
x : 180 ,
y : 150 ,
opacity : 0.75
} ) ;
simpleLabel . add ( new Konva . Tag ( {
fill : 'yellow'
} ) ) ;
simpleLabel . add ( new Konva . Text ( {
text : 'Simple label' ,
fontFamily : 'Calibri' ,
fontSize : 18 ,
padding : 5 ,
fill : 'black'
} ) ) ;
// add the labels to layer
layer . add ( tooltip , tooltipUp , labelLeft , labelRight , simpleLabel ) ;
layer . children . cache ( ) ;
stage . add ( layer ) ;
2015-05-25 12:26:30 +08:00
cloneAndCompareLayer ( layer , 254 ) ;
2015-02-12 15:10:36 +08:00
} ) ;
2015-08-28 11:11:10 +08:00
} ) ;