用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
2.9 KiB

5 months ago
/*
* Copyright 2006 The Android Open Source Project
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef _SPoint_DEFINED_
#define _SPoint_DEFINED_
#include <interface/SRender-i.h>
#include <matrix/SFloat.h>
namespace SOUI{
struct SOUI_EXP SPoint : public fPoint {
static SPoint Make(float x, float y) {
SPoint pt;
pt.set(x, y);
return pt;
}
static SPoint IMake(int32_t x, int32_t y)
{
SPoint pt;
pt.iset(x, y);
return pt;
}
static SPoint IMake(const POINT &src)
{
SPoint pt;
pt.iset(src.x, src.y);
return pt;
}
float x() const { return fX; }
float y() const { return fY; }
/**
* Returns true iff fX and fY are both zero.
*/
bool isZero() const { return (0 == fX) & (0 == fY); }
/** Set the point's X and Y coordinates */
void set(float x, float y) { fX = x; fY = y; }
/** Set the point's X and Y coordinates by automatically promoting (x,y) to
float values.
*/
void iset(int32_t x, int32_t y);
/** Set the point's X and Y coordinates by automatically promoting p's
coordinates to float values.
*/
void iset(const POINT & p);
/** Return the euclidian distance from (0,0) to the point
*/
float length() const { return SPoint::Length(fX, fY); }
/** Returns a new point whose coordinates are the negative of the point's
*/
SPoint operator-() const {
SPoint neg;
neg.fX = -fX;
neg.fY = -fY;
return neg;
}
/** Add v's coordinates to the point's
*/
void operator+=(const SPoint& v) {
fX += v.fX;
fY += v.fY;
}
/** Subtract v's coordinates from the point's
*/
void operator-=(const SPoint& v) {
fX -= v.fX;
fY -= v.fY;
}
friend bool operator==(const SPoint& a, const SPoint& b) {
return a.fX == b.fX && a.fY == b.fY;
}
friend bool operator!=(const SPoint& a, const SPoint& b) {
return a.fX != b.fX || a.fY != b.fY;
}
/** Returns a new point whose coordinates are the difference between
a's and b's (a - b)
*/
friend SPoint operator-(const SPoint& a, const SPoint& b) {
SPoint v;
v.set(a.fX - b.fX, a.fY - b.fY);
return v;
}
/** Returns a new point whose coordinates are the sum of a's and b's (a + b)
*/
friend SPoint operator+(const SPoint& a, const SPoint& b) {
SPoint v;
v.set(a.fX + b.fX, a.fY + b.fY);
return v;
}
/** Returns the euclidian distance from (0,0) to (x,y)
*/
static float Length(float x, float y);
/** Returns the dot product of a and b, treating them as 2D vectors
*/
static float DotProduct(const SPoint& a, const SPoint& b);
float dot(const SPoint& vec) const;
POINT toPoint() const;
};
typedef SPoint SVector2D;
}//end of namespace SOUI
#endif