From: Peter Åstrand Date: Thu, 13 Jan 2005 22:11:30 +0000 (+0000) Subject: min and max changed to vncmin and vncmax. This solves many problems: Some platforms... X-Git-Tag: v0.0.90~384^2~739 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0f49e22bdc0f9b8cfbaa420f114c5313c7ea68bd;p=tigervnc.git min and max changed to vncmin and vncmax. This solves many problems: Some platforms predefines or redefines these symbols. Some platforms have header files which chokes if min or max are defined. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@96 3789f03b-4d11-0410-bbf8-ca57d06f2519 --- diff --git a/Xregion/Region.c b/Xregion/Region.c index bf2d123b..c0b1e5a2 100644 --- a/Xregion/Region.c +++ b/Xregion/Region.c @@ -78,6 +78,13 @@ SOFTWARE. #include "region.h" //#include "poly.h" +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef max +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#endif + #ifdef DEBUG #include #define assert(expr) {if (!(expr)) fprintf(stderr,\ diff --git a/Xregion/Xregion.h b/Xregion/Xregion.h index 7fa44d96..e8c9a4f9 100644 --- a/Xregion/Xregion.h +++ b/Xregion/Xregion.h @@ -61,14 +61,6 @@ SOFTWARE. #define Xfree free #define Xrealloc realloc -#ifndef max -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#endif - -#ifndef min -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif - #define NeedFunctionPrototypes 1 // - Cribbed from Xlib.h diff --git a/rdr/FdInStream.cxx b/rdr/FdInStream.cxx index 38e12acf..b65566dc 100644 --- a/rdr/FdInStream.cxx +++ b/rdr/FdInStream.cxx @@ -36,12 +36,11 @@ #include #endif -#ifndef min -#define min(a,b) (((a) < (b)) ? (a) : (b)) +#ifndef vncmin +#define vncmin(a,b) (((a) < (b)) ? (a) : (b)) #endif - -#ifndef max -#define max(a,b) (((a) > (b)) ? (a) : (b)) +#ifndef vncmax +#define vncmax(a,b) (((a) > (b)) ? (a) : (b)) #endif // XXX should use autoconf HAVE_SYS_SELECT_H @@ -146,7 +145,7 @@ int FdInStream::overrun(int itemSize, int nItems, bool wait) // during timing=1 can be satisfied without calling // readWithTimeoutOrCallback. However, reading only 1 or 2 bytes // bytes is ineffecient. - bytes_to_read = min(bytes_to_read, max(itemSize*nItems, 8)); + bytes_to_read = vncmin(bytes_to_read, vncmax(itemSize*nItems, 8)); } int n = readWithTimeoutOrCallback((U8*)end, bytes_to_read, wait); if (n == 0) return 0; diff --git a/rfb/ComparingUpdateTracker.cxx b/rfb/ComparingUpdateTracker.cxx index 0c44d85a..0b548a6c 100644 --- a/rfb/ComparingUpdateTracker.cxx +++ b/rfb/ComparingUpdateTracker.cxx @@ -60,7 +60,7 @@ void ComparingUpdateTracker::compare() // since in effect the entire framebuffer has changed. oldFb.setSize(fb->width(), fb->height()); for (int y=0; yheight(); y+=BLOCK_SIZE) { - Rect pos(0, y, fb->width(), min(fb->height(), y+BLOCK_SIZE)); + Rect pos(0, y, fb->width(), vncmin(fb->height(), y+BLOCK_SIZE)); int srcStride; const rdr::U8* srcData = fb->getPixelsR(pos, &srcStride); oldFb.imageRect(pos, srcData, srcStride); @@ -100,20 +100,20 @@ void ComparingUpdateTracker::compareRect(const Rect& r, Region* newChanged) for (int blockTop = r.tl.y; blockTop < r.br.y; blockTop += BLOCK_SIZE) { // Get a strip of the source buffer - Rect pos(r.tl.x, blockTop, r.br.x, min(r.br.y, blockTop+BLOCK_SIZE)); + Rect pos(r.tl.x, blockTop, r.br.x, vncmin(r.br.y, blockTop+BLOCK_SIZE)); int fbStride; const rdr::U8* newBlockPtr = fb->getPixelsR(pos, &fbStride); int newStrideBytes = fbStride * bytesPerPixel; rdr::U8* oldBlockPtr = oldData; - int blockBottom = min(blockTop+BLOCK_SIZE, r.br.y); + int blockBottom = vncmin(blockTop+BLOCK_SIZE, r.br.y); for (int blockLeft = r.tl.x; blockLeft < r.br.x; blockLeft += BLOCK_SIZE) { const rdr::U8* newPtr = newBlockPtr; rdr::U8* oldPtr = oldBlockPtr; - int blockRight = min(blockLeft+BLOCK_SIZE, r.br.x); + int blockRight = vncmin(blockLeft+BLOCK_SIZE, r.br.x); int blockWidthInBytes = (blockRight-blockLeft) * bytesPerPixel; for (int y = blockTop; y < blockBottom; y++) diff --git a/rfb/Rect.h b/rfb/Rect.h index ee43e669..0ddf36cb 100644 --- a/rfb/Rect.h +++ b/rfb/Rect.h @@ -21,13 +21,7 @@ #ifndef __RFB_RECT_INCLUDED__ #define __RFB_RECT_INCLUDED__ -#ifndef max -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#endif - -#ifndef min -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif +#include namespace rfb { @@ -70,20 +64,20 @@ namespace rfb { } inline Rect intersect(const Rect &r) const { Rect result; - result.tl.x = max(tl.x, r.tl.x); - result.tl.y = max(tl.y, r.tl.y); - result.br.x = max(min(br.x, r.br.x), result.tl.x); - result.br.y = max(min(br.y, r.br.y), result.tl.y); + result.tl.x = vncmax(tl.x, r.tl.x); + result.tl.y = vncmax(tl.y, r.tl.y); + result.br.x = vncmax(vncmin(br.x, r.br.x), result.tl.x); + result.br.y = vncmax(vncmin(br.y, r.br.y), result.tl.y); return result; } inline Rect union_boundary(const Rect &r) const { if (r.is_empty()) return *this; if (is_empty()) return r; Rect result; - result.tl.x = min(tl.x, r.tl.x); - result.tl.y = min(tl.y, r.tl.y); - result.br.x = max(br.x, r.br.x); - result.br.y = max(br.y, r.br.y); + result.tl.x = vncmin(tl.x, r.tl.x); + result.tl.y = vncmin(tl.y, r.tl.y); + result.br.x = vncmax(br.x, r.br.x); + result.br.y = vncmax(br.y, r.br.y); return result; } inline Rect translate(const Point &p) const { diff --git a/rfb/hextileDecode.h b/rfb/hextileDecode.h index dc685e3a..0c5559a4 100644 --- a/rfb/hextileDecode.h +++ b/rfb/hextileDecode.h @@ -52,11 +52,11 @@ void HEXTILE_DECODE (const Rect& r, rdr::InStream* is, PIXEL_T* buf for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 16) { - t.br.y = min(r.br.y, t.tl.y + 16); + t.br.y = vncmin(r.br.y, t.tl.y + 16); for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 16) { - t.br.x = min(r.br.x, t.tl.x + 16); + t.br.x = vncmin(r.br.x, t.tl.x + 16); int tileType = is->readU8(); diff --git a/rfb/hextileEncode.h b/rfb/hextileEncode.h index a55842a0..15c8862e 100644 --- a/rfb/hextileEncode.h +++ b/rfb/hextileEncode.h @@ -60,11 +60,11 @@ void HEXTILE_ENCODE(const Rect& r, rdr::OutStream* os for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 16) { - t.br.y = min(r.br.y, t.tl.y + 16); + t.br.y = vncmin(r.br.y, t.tl.y + 16); for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 16) { - t.br.x = min(r.br.x, t.tl.x + 16); + t.br.x = vncmin(r.br.x, t.tl.x + 16); GET_IMAGE_INTO_BUF(t,buf); diff --git a/rfb/util.h b/rfb/util.h index d792c8d1..b6541700 100644 --- a/rfb/util.h +++ b/rfb/util.h @@ -23,6 +23,13 @@ #ifndef __RFB_UTIL_H__ #define __RFB_UTIL_H__ +#ifndef vncmin +#define vncmin(a,b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef vncmax +#define vncmax(a,b) (((a) > (b)) ? (a) : (b)) +#endif + #include namespace rfb { @@ -67,21 +74,6 @@ namespace rfb { } #endif -// Some platforms (e.g. Windows) include max() and min() macros in their -// standard headers, so we define them only when not already defined. Note -// also that max() & min() are standard C++ template functions, so some C++ -// headers will undefine them. We place our definitions outside the #ifndef -// __RFB_UTIL_H__, so that you can always guarantee they will be defined if -// this file is the last #include before you use them. - -#ifndef max -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#endif - -#ifndef min -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif - // -=- PLATFORM SPECIFIC UTILITY FUNCTIONS/IMPLEMENTATIONS #ifdef WIN32 diff --git a/rfb/zrleDecode.h b/rfb/zrleDecode.h index b5391b11..e1f85f77 100644 --- a/rfb/zrleDecode.h +++ b/rfb/zrleDecode.h @@ -61,11 +61,11 @@ void ZRLE_DECODE (const Rect& r, rdr::InStream* is, for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 64) { - t.br.y = min(r.br.y, t.tl.y + 64); + t.br.y = vncmin(r.br.y, t.tl.y + 64); for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 64) { - t.br.x = min(r.br.x, t.tl.x + 64); + t.br.x = vncmin(r.br.x, t.tl.x + 64); int mode = zis->readU8(); bool rle = mode & 128; diff --git a/rfb/zrleEncode.h b/rfb/zrleEncode.h index a1582f2a..42505a31 100644 --- a/rfb/zrleEncode.h +++ b/rfb/zrleEncode.h @@ -130,7 +130,7 @@ bool ZRLE_ENCODE (const Rect& r, rdr::OutStream* os, for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 64) { - t.br.y = min(r.br.y, t.tl.y + 64); + t.br.y = vncmin(r.br.y, t.tl.y + 64); if (os->length() + worstCaseLine > maxLen) { if (t.tl.y == r.tl.y) @@ -143,7 +143,7 @@ bool ZRLE_ENCODE (const Rect& r, rdr::OutStream* os, for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 64) { - t.br.x = min(r.br.x, t.tl.x + 64); + t.br.x = vncmin(r.br.x, t.tl.x + 64); GET_IMAGE_INTO_BUF(t,buf); diff --git a/tx/TXButton.h b/tx/TXButton.h index 3f0c57e6..c22dbf94 100644 --- a/tx/TXButton.h +++ b/tx/TXButton.h @@ -62,8 +62,8 @@ public: text.buf = rfb::strDup(text_); int textWidth = XTextWidth(defaultFS, text.buf, strlen(text.buf)); int textHeight = (defaultFS->ascent + defaultFS->descent); - int newWidth = max(width(), textWidth + xPad*2 + bevel*2); - int newHeight = max(height(), textHeight + yPad*2 + bevel*2); + int newWidth = vncmax(width(), textWidth + xPad*2 + bevel*2); + int newHeight = vncmax(height(), textHeight + yPad*2 + bevel*2); if (width() < newWidth || height() < newHeight) { resize(newWidth, newHeight); } diff --git a/tx/TXCheckbox.h b/tx/TXCheckbox.h index 146091d0..41eef27c 100644 --- a/tx/TXCheckbox.h +++ b/tx/TXCheckbox.h @@ -71,8 +71,8 @@ public: text = strdup(text_); int textWidth = XTextWidth(defaultFS, text, strlen(text)); int textHeight = (defaultFS->ascent + defaultFS->descent); - int newWidth = max(width(), textWidth + xPad*2 + boxPad*2 + boxSize); - int newHeight = max(height(), textHeight + yPad*2); + int newWidth = vncmax(width(), textWidth + xPad*2 + boxPad*2 + boxSize); + int newHeight = vncmax(height(), textHeight + yPad*2); if (width() < newWidth || height() < newHeight) { resize(newWidth, newHeight); } diff --git a/tx/TXEntry.h b/tx/TXEntry.h index b51946e3..0d1f005f 100644 --- a/tx/TXEntry.h +++ b/tx/TXEntry.h @@ -58,7 +58,7 @@ public: | ButtonPressMask); text[0] = 0; int textHeight = (defaultFS->ascent + defaultFS->descent); - int newHeight = max(height(), textHeight + yPad*2 + bevel*2); + int newHeight = vncmax(height(), textHeight + yPad*2 + bevel*2); if (height() < newHeight) { resize(width(), newHeight); } diff --git a/tx/TXImage.cxx b/tx/TXImage.cxx index d5b06493..caaeec43 100644 --- a/tx/TXImage.cxx +++ b/tx/TXImage.cxx @@ -71,8 +71,8 @@ void TXImage::resize(int w, int h) if (w == width() && h == height()) return; int oldStrideBytes = getStride() * (format.bpp/8); - int rowsToCopy = min(h, height()); - int bytesPerRow = min(w, width()) * (format.bpp/8); + int rowsToCopy = vncmin(h, height()); + int bytesPerRow = vncmin(w, width()) * (format.bpp/8); rdr::U8* oldData = 0; bool allocData = false; diff --git a/tx/TXLabel.h b/tx/TXLabel.h index 44f70477..bbd893a5 100644 --- a/tx/TXLabel.h +++ b/tx/TXLabel.h @@ -64,8 +64,8 @@ public: int textHeight = ((defaultFS->ascent + defaultFS->descent + lineSpacing) * lines); - int newWidth = max(width(), textWidth + xPad*2); - int newHeight = max(height(), textHeight + yPad*2); + int newWidth = vncmax(width(), textWidth + xPad*2); + int newHeight = vncmax(height(), textHeight + yPad*2); if (width() < newWidth || height() < newHeight) { resize(newWidth, newHeight); }