Revert "move homogenous with stride to matrixpriv"

This reverts commit 2d53d98425.

Reason for revert: revert needed to revert previous cl

Original change's description:
> move homogenous with stride to matrixpriv
> 
> this appears to be needed only by Skia
> internally, so move it out of the public
> includes.
> 
> R=​bsalomon@google.com
> Bug: skia:6898
> Change-Id: Iebdda8f2c9a8fd953dd44bac9b74158d7491c21a
> Reviewed-on: https://skia-review.googlesource.com/85961
> Commit-Queue: Cary Clark <caryclark@skia.org>
> Commit-Queue: Cary Clark <caryclark@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

TBR=bsalomon@google.com,caryclark@google.com,caryclark@skia.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: skia:6898
Change-Id: Icbd15ee0b524c770a324c490ab0cadf6a045e0d5
Reviewed-on: https://skia-review.googlesource.com/86800
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
This commit is contained in:
Greg Daniel 2017-12-18 21:13:41 +00:00
parent 1aa6cdad10
commit de71572f65
4 changed files with 13 additions and 16 deletions

View File

@ -1337,6 +1337,9 @@ public:
@param count items in SkPoint3 array to transform
*/
void mapHomogeneousPoints(SkPoint3 dst[], const SkPoint3 src[], int count) const;
/** Same as above but with a variable offset between successive points. */
void mapHomogeneousPointsWithStride(SkPoint3 dst[], const SkPoint3 src[], size_t stride,
int count) const;
/** Maps SkPoint (x, y) to result. SkPoint is mapped by multiplying by SkMatrix. Given:

View File

@ -6,7 +6,7 @@
*/
#include "SkFloatBits.h"
#include "SkMatrixPriv.h"
#include "SkMatrix.h"
#include "SkNx.h"
#include "SkPaint.h"
#include "SkPoint3.h"
@ -1037,15 +1037,14 @@ const SkMatrix::MapPtsProc SkMatrix::gMapPtsProcs[] = {
///////////////////////////////////////////////////////////////////////////////
void SkMatrixPriv::MapHomogeneousPointsWithStride(const SkMatrix& mx, SkPoint3 dst[],
const SkPoint3 src[], size_t stride,
int count) {
void SkMatrix::mapHomogeneousPointsWithStride(SkPoint3 dst[], const SkPoint3 src[], size_t stride,
int count) const {
SkASSERT((dst && src && count > 0) || 0 == count);
// no partial overlap
SkASSERT(src == dst || &dst[count] <= &src[0] || &src[count] <= &dst[0]);
if (count > 0) {
if (mx.isIdentity()) {
if (this->isIdentity()) {
if (src != dst) {
if (stride == sizeof(SkPoint3)) {
memcpy(dst, src, count * sizeof(SkPoint3));
@ -1065,11 +1064,10 @@ void SkMatrixPriv::MapHomogeneousPointsWithStride(const SkMatrix& mx, SkPoint3 d
SkScalar sy = src->fY;
SkScalar sw = src->fZ;
src = reinterpret_cast<const SkPoint3*>(reinterpret_cast<const char*>(src) + stride);
const SkScalar* mat = mx.fMat;
typedef SkMatrix M;
SkScalar x = sdot(sx, mat[M::kMScaleX], sy, mat[M::kMSkewX], sw, mat[M::kMTransX]);
SkScalar y = sdot(sx, mat[M::kMSkewY], sy, mat[M::kMScaleY], sw, mat[M::kMTransY]);
SkScalar w = sdot(sx, mat[M::kMPersp0], sy, mat[M::kMPersp1], sw, mat[M::kMPersp2]);
SkScalar x = sdot(sx, fMat[kMScaleX], sy, fMat[kMSkewX], sw, fMat[kMTransX]);
SkScalar y = sdot(sx, fMat[kMSkewY], sy, fMat[kMScaleY], sw, fMat[kMTransY]);
SkScalar w = sdot(sx, fMat[kMPersp0], sy, fMat[kMPersp1], sw, fMat[kMPersp2]);
dst->set(x, y, w);
dst = reinterpret_cast<SkPoint3*>(reinterpret_cast<char*>(dst) + stride);
@ -1078,7 +1076,7 @@ void SkMatrixPriv::MapHomogeneousPointsWithStride(const SkMatrix& mx, SkPoint3 d
}
void SkMatrix::mapHomogeneousPoints(SkPoint3 dst[], const SkPoint3 src[], int count) const {
SkMatrixPriv::MapHomogeneousPointsWithStride(*this, dst, src, sizeof(SkPoint3), count);
this->mapHomogeneousPointsWithStride(dst, src, sizeof(SkPoint3), count);
}
///////////////////////////////////////////////////////////////////////////////

View File

@ -92,9 +92,6 @@ public:
}
}
static void MapHomogeneousPointsWithStride(const SkMatrix& mx, SkPoint3 dst[],
const SkPoint3 src[], size_t stride, int count);
static void SetMappedRectTriStrip(const SkMatrix& mx, const SkRect& rect, SkPoint quad[4]) {
SkMatrix::TypeMask tm = mx.getType();
SkScalar l = rect.fLeft;

View File

@ -11,7 +11,6 @@
#include "GrResourceProvider.h"
#include "SkGlyphCache.h"
#include "SkMathPriv.h"
#include "SkMatrixPriv.h"
#include "SkPoint3.h"
#include "effects/GrBitmapTextGeoProc.h"
#include "effects/GrDistanceFieldGeoProc.h"
@ -282,7 +281,7 @@ void GrAtlasTextOp::onPrepareDraws(Target* target) {
// arbitrary transformations would be complicated and accumulate error.
if (args.fViewMatrix.hasPerspective()) {
auto* pos = reinterpret_cast<SkPoint3*>(currVertex);
SkMatrixPriv::MapHomogeneousPointsWithStride(args.fViewMatrix,
args.fViewMatrix.mapHomogeneousPointsWithStride(
pos, pos, vertexStride, result.fGlyphsRegenerated * kVerticesPerGlyph);
} else {
auto* pos = reinterpret_cast<SkPoint*>(currVertex);