Only split text at line angle changes
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 19 KiB |
@@ -358,7 +358,7 @@ describe('ol.rendering.style.Text', function() {
|
||||
}));
|
||||
vectorSource.addFeature(feature);
|
||||
map.getView().fit(vectorSource.getExtent());
|
||||
expectResemble(map, 'rendering/ol/style/expected/text-multilinestring.png', 6.9, done);
|
||||
expectResemble(map, 'rendering/ol/style/expected/text-multilinestring.png', 7, done);
|
||||
});
|
||||
|
||||
it('renders text along a Polygon', function(done) {
|
||||
|
||||
@@ -18,20 +18,20 @@ describe('textpath', function() {
|
||||
var startM = 50 - 15;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
horizontal, 0, horizontal.length, 2, 'foo', measure, startM, Infinity);
|
||||
expect(instructions).to.eql([[40, 0, 0], [50, 0, 0], [60, 0, 0]]);
|
||||
expect(instructions).to.eql([[40, 0, 5, 0, 'foo']]);
|
||||
});
|
||||
|
||||
it('left-aligns text on a horizontal line', function() {
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
horizontal, 0, horizontal.length, 2, 'foo', measure, 0, Infinity);
|
||||
expect(instructions).to.eql([[5, 0, 0], [15, 0, 0], [25, 0, 0]]);
|
||||
expect(instructions).to.eql([[5, 0, 5, 0, 'foo']]);
|
||||
});
|
||||
|
||||
it('right-aligns text on a horizontal line', function() {
|
||||
var startM = 100 - 30;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
horizontal, 0, horizontal.length, 2, 'foo', measure, startM, Infinity);
|
||||
expect(instructions).to.eql([[75, 0, 0], [85, 0, 0], [95, 0, 0]]);
|
||||
expect(instructions).to.eql([[75, 0, 5, 0, 'foo']]);
|
||||
});
|
||||
|
||||
it('draws text on a vertical line', function() {
|
||||
@@ -39,33 +39,31 @@ describe('textpath', function() {
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
vertical, 0, vertical.length, 2, 'foo', measure, startM, Infinity);
|
||||
var a = 90 * Math.PI / 180;
|
||||
expect(instructions).to.eql([[0, 40, a], [0, 50, a], [0, 60, a]]);
|
||||
expect(instructions).to.eql([[0, 40, 5, a, 'foo']]);
|
||||
});
|
||||
|
||||
it('draws text on a diagonal line', function() {
|
||||
var startM = Math.sqrt(2) * 50 - 15;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
diagonal, 0, diagonal.length, 2, 'foo', measure, startM, Infinity);
|
||||
expect(instructions[0][2]).to.be(45 * Math.PI / 180);
|
||||
expect(instructions[0][0]).to.be.lessThan(instructions[2][0]);
|
||||
expect(instructions[0][1]).to.be.lessThan(instructions[2][1]);
|
||||
expect(instructions[0][3]).to.be(45 * Math.PI / 180);
|
||||
expect(instructions.length).to.be(1);
|
||||
});
|
||||
|
||||
it('draws reverse text on a diagonal line', function() {
|
||||
var startM = Math.sqrt(2) * 50 - 15;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
reverse, 0, reverse.length, 2, 'foo', measure, startM, Infinity);
|
||||
expect(instructions[0][2]).to.be(-45 * Math.PI / 180);
|
||||
expect(instructions[0][0]).to.be.lessThan(instructions[2][0]);
|
||||
expect(instructions[0][1]).to.be.greaterThan(instructions[2][1]);
|
||||
expect(instructions[0][3]).to.be(-45 * Math.PI / 180);
|
||||
expect(instructions.length).to.be(1);
|
||||
});
|
||||
|
||||
it('renders long text with extrapolation', function() {
|
||||
var startM = 50 - 75;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
horizontal, 0, horizontal.length, 2, 'foo-foo-foo-foo', measure, startM, Infinity);
|
||||
expect(instructions[0]).to.eql([-20, 0, 0]);
|
||||
expect(instructions[14]).to.eql([120, 0, 0]);
|
||||
expect(instructions[0]).to.eql([-20, 0, 5, 0, 'foo-foo-foo-foo']);
|
||||
expect(instructions.length).to.be(1);
|
||||
});
|
||||
|
||||
it('renders angled text', function() {
|
||||
@@ -73,8 +71,10 @@ describe('textpath', function() {
|
||||
var startM = length / 2 - 15;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
angled, 0, angled.length, 2, 'foo', measure, startM, Infinity);
|
||||
expect(instructions[0][2]).to.be(45 * Math.PI / 180);
|
||||
expect(instructions[2][2]).to.be(-45 * Math.PI / 180);
|
||||
expect(instructions[0][3]).to.eql(45 * Math.PI / 180);
|
||||
expect(instructions[0][4]).to.be('fo');
|
||||
expect(instructions[1][3]).to.eql(-45 * Math.PI / 180);
|
||||
expect(instructions[1][4]).to.be('o');
|
||||
});
|
||||
|
||||
it('respects maxAngle', function() {
|
||||
@@ -93,12 +93,13 @@ describe('textpath', function() {
|
||||
expect(instructions).to.not.be(undefined);
|
||||
});
|
||||
|
||||
it('respects the begin option', function() {
|
||||
it('respects the offset option', function() {
|
||||
var length = ol.geom.flat.length.lineString(angled, 2, angled.length, 2);
|
||||
var startM = length / 2 - 15;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
angled, 2, angled.length, 2, 'foo', measure, startM, Infinity);
|
||||
expect(instructions[1][0]).to.be(150);
|
||||
expect(instructions[0][3]).to.be(-45 * Math.PI / 180);
|
||||
expect(instructions.length).to.be(1);
|
||||
});
|
||||
|
||||
it('respects the end option', function() {
|
||||
@@ -106,16 +107,8 @@ describe('textpath', function() {
|
||||
var startM = length / 2 - 15;
|
||||
var instructions = ol.geom.flat.textpath.lineString(
|
||||
angled, 0, 4, 2, 'foo', measure, startM, Infinity);
|
||||
expect(instructions[1][0]).to.be(50);
|
||||
});
|
||||
|
||||
it('uses the provided result array', function() {
|
||||
var result = [];
|
||||
result[3] = undefined;
|
||||
var startM = 50 - 15;
|
||||
ol.geom.flat.textpath.lineString(
|
||||
horizontal, 0, horizontal.length, 2, 'foo', measure, startM, Infinity, result);
|
||||
expect(result).to.eql([[40, 0, 0], [50, 0, 0], [60, 0, 0], undefined]);
|
||||
expect(instructions[0][3]).to.be(45 * Math.PI / 180);
|
||||
expect(instructions.length).to.be(1);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user