Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members

fxexutils.h

Go to the documentation of this file.
00001 /********************************************************************************
00002 *                                                                               *
00003 *                  Utility functions                                            *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 2003 by Mathew Robertson.   All Rights Reserved.                *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or                 *
00009 * modify it under the terms of the GNU Lesser General Public                    *
00010 * License as published by the Free Software Foundation; either                  *
00011 * version 2.1 of the License, or (at your option) any later version.            *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *
00016 * Lesser General Public License for more details.                               *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public              *
00019 * License along with this library; if not, write to the Free Software           *
00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *
00021 ********************************************************************************/
00022 #ifndef FXEXUTILS_H
00023 #define FXEXUTILS_H
00024 namespace FXEX {
00025 
00026 /**
00027  * The FXUtils namespace encapsulates some useful functions, into a single collection.
00028  */
00029 namespace FXUtils {
00030 
00031 /**
00032  * Save the machine dependant endianness value to the stream
00033  */
00034 extern FXAPI void saveEndianness(FXStream& store);
00035 
00036 /**
00037  * Load the machine dependant endianness value from the stream,
00038  * and setup stream to swap the bytes if the stream byte order
00039  * is non-native to the CPU architecture
00040  */
00041 extern FXAPI void loadEndianness(FXStream& store);
00042 
00043 /**
00044  * Create a random seed for use with fxrandom.
00045  * It is based on the current time, so its a _reasonably_ random seed
00046  */
00047 extern FXAPI FXuint fxrandomseed();
00048 
00049 /**
00050  * A useful function calls for generating random numbers
00051  * generate an integer/float number between [lowerBound,upperBound).
00052  */
00053 extern FXAPI FXint fxrand(FXint upperBound,FXint lowerBound=0);
00054 /// Returns a float rather than an int.
00055 extern FXAPI FXfloat fxrand(FXfloat upperBound,FXfloat lowerBound=0.0);
00056 
00057 /**
00058  * Set the font of all children - this is recursive
00059  */
00060 extern FXAPI void setFontOfChildren(FXComposite* w,FXFont* f);
00061 
00062 /**
00063  * Enable every widget and its children
00064  */
00065 extern FXAPI void enableWindow(FXWindow* w);
00066 
00067 /**
00068  * Disable every widget and its children
00069  */
00070 extern FXAPI void disableWindow(FXWindow* w);
00071 
00072 /// set the flags appropriately for the platform
00073 extern FXAPI FXuint fxfilemode(FXFilePermission permissions);
00074 
00075 /// load an image from a file
00076 extern FXAPI FXbool loadFileImage(const FXString& file,FXImage *img);
00077 
00078 /// load an icon from a file
00079 extern FXAPI FXbool loadFileIcon(const FXString& file,FXIcon *ico);
00080 
00081 /**
00082  * Load an image from a file; return an FXImage.
00083  * ... dont forget to delete the image, when finished with...
00084  */
00085 extern FXAPI FXImage* loadImage(const FXString& file);
00086 
00087 /**
00088  * Load an icon from a file; return an FXIcon
00089  * ... dont forget to delete the icon, when finished with...
00090  */
00091 extern FXAPI FXIcon* loadIcon(const FXString& file);
00092 
00093 /**
00094  * For anyone that uses images/icons with transparency here is a pretty
00095  * good function to have.  A function I wrote called blendIcon is below.
00096  * Basically it takes and icon and applies the transparency blend for you
00097  * and sets the color back to the icon.  When using icons/images with
00098  * gradient transparencies (such as those used for drop shadows) on menus
00099  * and buttons they will look perfect.  It should be somewhat optimized so
00100  * that no floating point math is needed.  Here is a simple example of how
00101  * to use it:
00102  *
00103  * FXPNGIcon *icon = new FXPNGIcon(getApp(), my_icon);
00104  * blendIcon(icon, getApp()->getBaseColor());
00105  * FXButton *button = new FXButton(this, "Click", icon);
00106  */
00107 extern FXAPI FXIcon* blendIcon(FXIcon *icon, FXColor baseColor);
00108 
00109 
00110 }; // namespace FXUtils
00111 }; // namespace FXEX
00112 
00113 #endif // FXEXUTILS_H