var BatchChar = require('../BatchChar'); var GetCalcMatrix = require('../../GetCalcMatrix'); var Utils = require('../../../renderer/webgl/Utils'); var BitmapTextWebGLRenderer = function (renderer, src, camera, parentMatrix){ var text = src._text; var textLength = _AN_Read_length('length', text); if (textLength === 0) { return ; } var pipeline = renderer.pipelines.set(src.pipeline, src); var calcMatrix = GetCalcMatrix(src, camera, parentMatrix).calc; var roundPixels = camera.roundPixels; var cameraAlpha = camera.alpha; var charColors = src.charColors; var tintEffect = src.tintFill; var tintTL = Utils.getTintAppendFloatAlpha(src.tintTopLeft, cameraAlpha * src._alphaTL); var tintTR = Utils.getTintAppendFloatAlpha(src.tintTopRight, cameraAlpha * src._alphaTR); var tintBL = Utils.getTintAppendFloatAlpha(src.tintBottomLeft, cameraAlpha * src._alphaBL); var tintBR = Utils.getTintAppendFloatAlpha(src.tintBottomRight, cameraAlpha * src._alphaBR); var texture = src.frame.glTexture; var textureUnit = pipeline.setGameObject(src); var bounds = src.getTextBounds(false ); var i; var char; var glyph; var characters = bounds.characters; var dropShadowX = src.dropShadowX; var dropShadowY = src.dropShadowY; var dropShadow = (dropShadowX !== 0 || dropShadowY !== 0); renderer.pipelines.preBatch(src); if (dropShadow) { var srcShadowColor = src._dropShadowColorGL; var srcShadowAlpha = src.dropShadowAlpha; var blackTL = Utils.getTintAppendFloatAlpha(srcShadowColor, cameraAlpha * srcShadowAlpha * src._alphaTL); var blackTR = Utils.getTintAppendFloatAlpha(srcShadowColor, cameraAlpha * srcShadowAlpha * src._alphaTR); var blackBL = Utils.getTintAppendFloatAlpha(srcShadowColor, cameraAlpha * srcShadowAlpha * src._alphaBL); var blackBR = Utils.getTintAppendFloatAlpha(srcShadowColor, cameraAlpha * srcShadowAlpha * src._alphaBR); for (i = 0; i < _AN_Read_length('length', characters); i++ ){ char = characters[i]; glyph = char.glyph; if (char.code === 32 || glyph.width === 0 || glyph.height === 0) { continue ; } BatchChar(pipeline, src, char, glyph, dropShadowX, dropShadowY, calcMatrix, roundPixels, blackTL, blackTR, blackBL, blackBR, 0, texture, textureUnit); } } for (i = 0; i < _AN_Read_length('length', characters); i++ ){ char = characters[i]; glyph = char.glyph; if (char.code === 32 || glyph.width === 0 || glyph.height === 0) { continue ; } if (charColors[char.i]) { var color = charColors[char.i]; var ctintEffect = color.tintEffect; var ctintTL = Utils.getTintAppendFloatAlpha(color.tintTL, cameraAlpha * src._alphaTL); var ctintTR = Utils.getTintAppendFloatAlpha(color.tintTR, cameraAlpha * src._alphaTR); var ctintBL = Utils.getTintAppendFloatAlpha(color.tintBL, cameraAlpha * src._alphaBL); var ctintBR = Utils.getTintAppendFloatAlpha(color.tintBR, cameraAlpha * src._alphaBR); BatchChar(pipeline, src, char, glyph, 0, 0, calcMatrix, roundPixels, ctintTL, ctintTR, ctintBL, ctintBR, ctintEffect, texture, textureUnit); } else { BatchChar(pipeline, src, char, glyph, 0, 0, calcMatrix, roundPixels, tintTL, tintTR, tintBL, tintBR, tintEffect, texture, textureUnit); } } renderer.pipelines.postBatch(src); } ; module.exports = BitmapTextWebGLRenderer;