1144 float dydist = len(mxy, myy); 1145 if (dxdist == 0.0f || dydist == 0.0f) { 1146 // entire path has collapsed and occupies no area 1147 return true; 1148 } 1149 float pixelw = 1.0f / dxdist; 1150 float pixelh = 1.0f / dydist; 1151 float x0 = x - pad - pixelw * 0.5f; 1152 float y0 = y - pad - pixelh * 0.5f; 1153 float xc = x + w * 0.5f; 1154 float yc = y + h * 0.5f; 1155 float x1 = x + w + pad + pixelw * 0.5f; 1156 float y1 = y + h + pad + pixelh * 0.5f; 1157 Texture rTex = context.getWrapRectTexture(); 1158 float wscale = 1.0f / rTex.getPhysicalWidth(); 1159 float hscale = 1.0f / rTex.getPhysicalHeight(); 1160 float ou0 = 0.5f * wscale; 1161 float ov0 = 0.5f * hscale; 1162 float ouc = ((w * 0.5f + pad) * dxdist + 1.0f) * wscale; 1163 float ovc = ((h * 0.5f + pad) * dydist + 1.0f) * hscale; 1164 float offsetx = lw * wscale; 1165 float offsety = lw * hscale; 1166 VertexBuffer vb = context.getVertexBuffer(); 1167 if (xform.isTranslateOrIdentity()) { 1168 x0 += mxt; 1169 y0 += myt; 1170 xc += mxt; 1171 yc += myt; 1172 x1 += mxt; 1173 y1 += myt; 1174 xform = IDENT; 1175 } else if (xform.is2D()) { 1176 Shader shader = 1177 context.validatePaintOp(this, IDENT, MaskType.ALPHA_TEXTURE_DIFF, 1178 rTex, x, y, w, h, 1179 offsetx, offsety, 0, 0, 0, 0); 1180 shader.setConstant("innerOffset", offsetx, offsety); 1181 AffineBase paintTx = getPaintTextureTx(IDENT, shader, x, y, w, h); 1182 float mxx_x0 = mxx * x0, myx_x0 = myx * x0; 1183 float mxy_y0 = mxy * y0, myy_y0 = myy * y0; 1184 float mxx_xc = mxx * xc, myx_xc = myx * xc; 1185 float mxy_yc = mxy * yc, myy_yc = myy * yc; | 1144 float dydist = len(mxy, myy); 1145 if (dxdist == 0.0f || dydist == 0.0f) { 1146 // entire path has collapsed and occupies no area 1147 return true; 1148 } 1149 float pixelw = 1.0f / dxdist; 1150 float pixelh = 1.0f / dydist; 1151 float x0 = x - pad - pixelw * 0.5f; 1152 float y0 = y - pad - pixelh * 0.5f; 1153 float xc = x + w * 0.5f; 1154 float yc = y + h * 0.5f; 1155 float x1 = x + w + pad + pixelw * 0.5f; 1156 float y1 = y + h + pad + pixelh * 0.5f; 1157 Texture rTex = context.getWrapRectTexture(); 1158 float wscale = 1.0f / rTex.getPhysicalWidth(); 1159 float hscale = 1.0f / rTex.getPhysicalHeight(); 1160 float ou0 = 0.5f * wscale; 1161 float ov0 = 0.5f * hscale; 1162 float ouc = ((w * 0.5f + pad) * dxdist + 1.0f) * wscale; 1163 float ovc = ((h * 0.5f + pad) * dydist + 1.0f) * hscale; 1164 float offsetx = lw * dxdist * wscale; 1165 float offsety = lw * dydist * hscale; 1166 VertexBuffer vb = context.getVertexBuffer(); 1167 if (xform.isTranslateOrIdentity()) { 1168 x0 += mxt; 1169 y0 += myt; 1170 xc += mxt; 1171 yc += myt; 1172 x1 += mxt; 1173 y1 += myt; 1174 xform = IDENT; 1175 } else if (xform.is2D()) { 1176 Shader shader = 1177 context.validatePaintOp(this, IDENT, MaskType.ALPHA_TEXTURE_DIFF, 1178 rTex, x, y, w, h, 1179 offsetx, offsety, 0, 0, 0, 0); 1180 shader.setConstant("innerOffset", offsetx, offsety); 1181 AffineBase paintTx = getPaintTextureTx(IDENT, shader, x, y, w, h); 1182 float mxx_x0 = mxx * x0, myx_x0 = myx * x0; 1183 float mxy_y0 = mxy * y0, myy_y0 = myy * y0; 1184 float mxx_xc = mxx * xc, myx_xc = myx * xc; 1185 float mxy_yc = mxy * yc, myy_yc = myy * yc; |