Skip to content

Commit 0fc9c3f

Browse files
committed
Moved BitmapText into new folder and added in scale and font size support.
1 parent 2490507 commit 0fc9c3f

11 files changed

Lines changed: 162 additions & 75 deletions

File tree

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: 'e88b07b0-fd52-11e6-8ceb-d72e0efa2ca0'
2+
build: '24668b80-fe14-11e6-9463-35f4273cae70'
33
};
44
module.exports = CHECKSUM;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
var Class = require('../../utils/Class');
2+
var GameObject = require('../GameObject');
3+
var Components = require('../../components');
4+
var Render = require('./BitmapTextRender');
5+
6+
var BitmapText = new Class({
7+
8+
Mixins: [
9+
Components.Transform,
10+
Components.Texture,
11+
Components.Size,
12+
Components.Alpha,
13+
Components.BlendMode,
14+
Components.Visible,
15+
Render
16+
],
17+
18+
initialize:
19+
20+
function BitmapText (state, x, y, font, text, size, align)
21+
{
22+
if (text === undefined) { text = ''; }
23+
if (size === undefined) { size = 32; }
24+
if (align === undefined) { align = 'left'; }
25+
26+
GameObject.call(this, state);
27+
28+
this.fontData = this.state.sys.cache.bitmapFont.get(font);
29+
30+
this.text = text;
31+
32+
this.fontSize = size;
33+
34+
this.setTexture(font);
35+
this.setPosition(x, y);
36+
}
37+
38+
});
39+
40+
module.exports = BitmapText;

v3/src/gameobjects/text/BitmapTextCanvasRenderer.js renamed to v3/src/gameobjects/bitmaptext/BitmapTextCanvasRenderer.js

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,51 @@
11
var BitmapTextCanvasRenderer = function (renderer, src, interpolationPercentage, camera)
22
{
3-
if (this.renderMask !== this.renderFlags)
3+
var text = src.text;
4+
var textLength = text.length;
5+
6+
if (this.renderMask !== this.renderFlags || textLength === 0)
47
{
58
return;
69
}
710

811
var textureFrame = src.frame;
12+
913
var cameraScrollX = camera.scrollX;
1014
var cameraScrollY = camera.scrollY;
11-
var text = src.text;
12-
var textLength = text.length;
15+
1316
var chars = src.fontData.chars;
1417
var lineHeight = src.fontData.lineHeight;
15-
var srcX = src.x;
18+
19+
var srcX = src.x;
1620
var srcY = src.y;
21+
1722
var xAdvance = 0;
1823
var yAdvance = 0;
24+
1925
var indexCount = 0;
2026
var charCode = 0;
27+
2128
var glyph = null;
2229
var glyphX = 0;
2330
var glyphY = 0;
2431
var glyphW = 0;
2532
var glyphH = 0;
33+
2634
var x = 0;
2735
var y = 0;
36+
2837
var lastGlyph = null;
2938
var lastCharCode = 0;
39+
3040
var ctx = renderer.currentContext;
3141
var image = src.frame.source.image;
32-
var textureData = src.texture.source[textureFrame.sourceIndex];
42+
3343
var textureX = textureFrame.cutX;
3444
var textureY = textureFrame.cutY;
3545

46+
var scaleX = src.scaleX * (src.fontSize / src.fontData.size);
47+
var scaleY = src.scaleY * (src.fontSize / src.fontData.size);
48+
3649
// Blend Mode
3750
if (renderer.currentBlendMode !== src.blendMode)
3851
{
@@ -56,6 +69,7 @@ var BitmapTextCanvasRenderer = function (renderer, src, interpolationPercentage,
5669
for (var index = 0; index < textLength; ++index)
5770
{
5871
charCode = text.charCodeAt(index);
72+
5973
if (charCode === 10)
6074
{
6175
xAdvance = 0;
@@ -66,26 +80,36 @@ var BitmapTextCanvasRenderer = function (renderer, src, interpolationPercentage,
6680
}
6781

6882
glyph = chars[charCode];
83+
6984
if (!glyph)
7085
{
7186
continue;
7287
}
7388

7489
glyphX = textureX + glyph.x;
7590
glyphY = textureY + glyph.y;
91+
7692
glyphW = glyph.width;
7793
glyphH = glyph.height;
78-
x = (srcX + indexCount + glyph.xOffset + xAdvance) - cameraScrollX;
79-
y = (srcY + glyph.yOffset + yAdvance) - cameraScrollY;
94+
95+
x = srcX + indexCount + glyph.xOffset + xAdvance;
96+
y = srcY + glyph.yOffset + yAdvance;
8097

8198
if (lastGlyph !== null)
8299
{
83100
var kerningOffset = glyph.kerning[lastCharCode];
84101
x += (kerningOffset !== undefined) ? kerningOffset : 0;
85102
}
86103

104+
x *= scaleX;
105+
y *= scaleY;
106+
107+
x -= cameraScrollX;
108+
y -= cameraScrollY;
109+
87110
ctx.save();
88111
ctx.translate(x, y);
112+
ctx.scale(scaleX, scaleY);
89113
ctx.drawImage(image, glyphX, glyphY, glyphW, glyphH, 0, 0, glyphW, glyphH);
90114
ctx.restore();
91115

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var BitmapText = require('./BitmapText');
2+
var FactoryContainer = require('../../gameobjects/FactoryContainer');
3+
4+
var BitmapTextFactory = {
5+
6+
KEY: 'bitmapText',
7+
8+
add: function (x, y, font, text, size, align)
9+
{
10+
return this.state.children.add(new BitmapText(this.state, x, y, font, text, size, align));
11+
},
12+
13+
make: function (x, y, font, text, size, align)
14+
{
15+
return new BitmapText(this.state, x, y, font, text, size, align);
16+
}
17+
18+
};
19+
20+
module.exports = FactoryContainer.register(BitmapTextFactory);
File renamed without changes.
File renamed without changes.
Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
var Class = require('../../utils/Class');
2-
var GameObject = require('../GameObject');
3-
var Components = require('../../components');
4-
var Render = require('./BitmapTextRender');
5-
6-
var ParseXMLBitmapFont = function (xml, xSpacing, ySpacing, frame)
1+
var ParseXMLBitmapFont = function (xml, xSpacing, ySpacing, frame)
72
{
3+
if (xSpacing === undefined) { xSpacing = 0; }
4+
if (ySpacing === undefined) { ySpacing = 0; }
5+
86
var data = {};
97
var info = xml.getElementsByTagName('info')[0];
108
var common = xml.getElementsByTagName('common')[0];
@@ -23,7 +21,8 @@ var ParseXMLBitmapFont = function (xml, xSpacing, ySpacing, frame)
2321
{
2422
var charCode = parseInt(letters[i].getAttribute('id'), 10);
2523

26-
data.chars[charCode] = {
24+
data.chars[charCode] =
25+
{
2726
x: x + parseInt(letters[i].getAttribute('x'), 10),
2827
y: y + parseInt(letters[i].getAttribute('y'), 10),
2928
width: parseInt(letters[i].getAttribute('width'), 10),
@@ -47,33 +46,6 @@ var ParseXMLBitmapFont = function (xml, xSpacing, ySpacing, frame)
4746
}
4847

4948
return data;
50-
}
51-
52-
var BitmapText = new Class({
53-
54-
Mixins: [
55-
Components.Transform,
56-
Components.Texture,
57-
Components.Size,
58-
Components.Alpha,
59-
Components.BlendMode,
60-
Components.Visible,
61-
Render
62-
],
63-
64-
initialize:
65-
66-
function BitmapText (state, x, y, text, key, subKey)
67-
{
68-
GameObject.call(this, state);
69-
70-
this.text = typeof text === 'string' ? text : '';
71-
this.fontData = ParseXMLBitmapFont(this.state.sys.cache.xml.get(subKey ? subKey : key), 0, 0);
72-
73-
this.setTexture(key, subKey);
74-
this.setPosition(x, y);
75-
}
76-
77-
});
49+
};
7850

79-
module.exports = BitmapText;
51+
module.exports = ParseXMLBitmapFont;

v3/src/gameobjects/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require('./blitter/BlitterFactory');
55
require('./container/ContainerFactory');
66
require('./image/ImageFactory');
77
require('./sprite/SpriteFactory');
8-
require('./text/BitmapTextFactory');
8+
require('./bitmaptext/BitmapTextFactory');
99
require('./graphics/GraphicsFactory');
1010

1111
// Phaser.GameObjects
@@ -14,7 +14,7 @@ module.exports = {
1414

1515
Factory: require('./FactoryContainer'),
1616

17-
BitmapText: require('./text/BitmapText'),
17+
BitmapText: require('./bitmaptext/BitmapText'),
1818
Blitter: require('./blitter/Blitter'),
1919
Container: require('./container/Container'),
2020
Image: require('./image/Image'),

v3/src/gameobjects/text/BitmapTextFactory.js

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var ImageFile = require('./ImageFile.js');
2+
var XMLFile = require('./XMLFile.js');
3+
4+
var BitmapFontFile = function (key, textureURL, xmlURL, path, textureXhrSettings, xmlXhrSettings)
5+
{
6+
var image = new ImageFile(key, textureURL, path, textureXhrSettings);
7+
var data = new XMLFile(key, xmlURL, path, xmlXhrSettings);
8+
9+
// Link them together
10+
image.linkFile = data;
11+
data.linkFile = image;
12+
13+
// Set the type
14+
image.linkType = 'bitmapfont';
15+
data.linkType = 'bitmapfont';
16+
17+
return { texture: image, data: data };
18+
};
19+
20+
module.exports = BitmapFontFile;

0 commit comments

Comments
 (0)