git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
servicemp3: allow .flv extension (this will ONLY work with most recent version of...
[enigma2.git]
/
lib
/
gdi
/
region.cpp
diff --git
a/lib/gdi/region.cpp
b/lib/gdi/region.cpp
index f79b403fee784fb7a469fe3e754b908818562960..1208c97ec893d0dbc5be5311ff66f62c8f62b4dc 100644
(file)
--- a/
lib/gdi/region.cpp
+++ b/
lib/gdi/region.cpp
@@
-42,7
+42,7
@@
int gRegion::do_coalesce(int prevStart, unsigned int curStart)
{
// Figure out how many rectangles are in the band.
unsigned int numRects = curStart - prevStart;
{
// Figure out how many rectangles are in the band.
unsigned int numRects = curStart - prevStart;
-
assert
(numRects == rects.size() - curStart);
+
ASSERT
(numRects == rects.size() - curStart);
if (!numRects)
return curStart;
std::vector<eRect>::iterator prevBox = rects.begin() + prevStart;
if (!numRects)
return curStart;
std::vector<eRect>::iterator prevBox = rects.begin() + prevStart;
@@
-84,11
+84,11
@@
void gRegion::appendNonO(std::vector<eRect>::const_iterator r,
std::vector<eRect>::const_iterator rEnd, int y1, int y2)
{
int newRects = rEnd - r;
std::vector<eRect>::const_iterator rEnd, int y1, int y2)
{
int newRects = rEnd - r;
-
assert
(y1 < y2);
-
assert
(newRects != 0);
+
ASSERT
(y1 < y2);
+
ASSERT
(newRects != 0);
rects.reserve(rects.size() + newRects);
do {
rects.reserve(rects.size() + newRects);
do {
-
assert
(r->x1 < r->x2);
+
ASSERT
(r->x1 < r->x2);
rects.push_back(eRect(r->x1, y1, r->x2 - r->x1, y2 - y1));
r++;
} while (r != rEnd);
rects.push_back(eRect(r->x1, y1, r->x2 - r->x1, y2 - y1));
r++;
} while (r != rEnd);
@@
-104,8
+104,8
@@
void gRegion::intersectO(
{
int x1, x2;
{
int x1, x2;
-
assert
(y1 < y2);
-
assert
(r1 != r1End && r2 != r2End);
+
ASSERT
(y1 < y2);
+
ASSERT
(r1 != r1End && r2 != r2End);
do {
x1 = max(r1->x1, r2->x1);
do {
x1 = max(r1->x1, r2->x1);
@@
-131,8
+131,8
@@
void gRegion::subtractO(
int x1;
x1 = r1->x1;
int x1;
x1 = r1->x1;
-
assert
(y1<y2);
-
assert
(r1 != r1End && r2 != r2End);
+
ASSERT
(y1<y2);
+
ASSERT
(r1 != r1End && r2 != r2End);
do {
if (r2->x2 <= x1)
do {
if (r2->x2 <= x1)
@@
-146,7
+146,7
@@
void gRegion::subtractO(
} else
++r2;
} else if (r2->x1 < r1->x2) {
} else
++r2;
} else if (r2->x1 < r1->x2) {
-
assert
(x1<r2->x1);
+
ASSERT
(x1<r2->x1);
rects.push_back(eRect(x1, y1, r2->x1 - x1, y2 - y1));
x1 = r2->x2;
if (x1 >= r1->x2) {
rects.push_back(eRect(x1, y1, r2->x1 - x1, y2 - y1));
x1 = r2->x2;
if (x1 >= r1->x2) {
@@
-166,7
+166,7
@@
void gRegion::subtractO(
} while ((r1 != r1End) && (r2 != r2End));
while (r1 != r1End)
{
} while ((r1 != r1End) && (r2 != r2End));
while (r1 != r1End)
{
-
assert
(x1<r1->x2);
+
ASSERT
(x1<r1->x2);
rects.push_back(eRect(x1, y1, r1->x2 - x1, y2 - y1));
++r1;
if (r1 != r1End)
rects.push_back(eRect(x1, y1, r1->x2 - x1, y2 - y1));
++r1;
if (r1 != r1End)
@@
-199,8
+199,8
@@
void gRegion::mergeO(
{
int x1, x2;
{
int x1, x2;
-
assert
(y1 < y2);
-
assert
(r1 != r1End && r2 != r2End);
+
ASSERT
(y1 < y2);
+
ASSERT
(r1 != r1End && r2 != r2End);
if (r1->x1 < r2->x1)
{
if (r1->x1 < r2->x1)
{
@@
-244,8
+244,8
@@
void gRegion::regionOp(const gRegion ®1, const gRegion ®2, int opcode, int
int newSize = reg1.rects.size();
int numRects = reg2.rects.size();
int newSize = reg1.rects.size();
int numRects = reg2.rects.size();
-
assert
(r1 != r1End);
-
assert
(r2 != r2End);
+
ASSERT
(r1 != r1End);
+
ASSERT
(r2 != r2End);
if (numRects > newSize)
newSize = numRects;
if (numRects > newSize)
newSize = numRects;
@@
-256,8
+256,8
@@
void gRegion::regionOp(const gRegion ®1, const gRegion ®2, int opcode, int
int ybot = min(r1->y1, r2->y1);
prevBand = 0;
do {
int ybot = min(r1->y1, r2->y1);
prevBand = 0;
do {
-
assert
(r1 != r1End);
-
assert
(r2 != r2End);
+
ASSERT
(r1 != r1End);
+
ASSERT
(r2 != r2End);
FindBand(r1, r1BandEnd, r1End, r1y1);
FindBand(r2, r2BandEnd, r2End, r2y1);
if (r1y1 < r2y1) {
FindBand(r1, r1BandEnd, r1End, r1y1);
FindBand(r2, r2BandEnd, r2End, r2y1);
if (r1y1 < r2y1) {
@@
-299,7
+299,7
@@
void gRegion::regionOp(const gRegion ®1, const gRegion ®2, int opcode, int
mergeO(r1, r1BandEnd, r2, r2BandEnd, ytop, ybot, overlap);
break;
default:
mergeO(r1, r1BandEnd, r2, r2BandEnd, ytop, ybot, overlap);
break;
default:
-
assert
(0);
+
ASSERT
(0);
break;
}
coalesce(prevBand, curBand);
break;
}
coalesce(prevBand, curBand);
@@
-325,6
+325,8
@@
void gRegion::regionOp(const gRegion ®1, const gRegion ®2, int opcode, int
for (unsigned int a = 0; a<rects.size(); ++a)
extends = extends | rects[a];
for (unsigned int a = 0; a<rects.size(); ++a)
extends = extends | rects[a];
+ if (!extends.valid())
+ extends = eRect::emptyRect();
}
void gRegion::intersect(const gRegion &r1, const gRegion &r2)
}
void gRegion::intersect(const gRegion &r1, const gRegion &r2)
@@
-424,3
+426,10
@@
void gRegion::moveBy(ePoint offset)
rects[i].moveBy(offset);
}
rects[i].moveBy(offset);
}
+void gRegion::scale(int x_n, int x_d, int y_n, int y_d)
+{
+ int i;
+ for (i=0; i<rects.size(); ++i)
+ rects[i].scale(x_n, x_d, y_n, y_d);
+}
+