TX Library Help – Version: 00173a, Revision: 174
 ALL  Windows graphics in a sandbox

FilippLib.h

См. документацию.
00001 //{===========================================================================
00010 //          (C) Филипп Куликов, 7 класс, 2006
00011 //}===========================================================================
00012 
00013 #include "TXLib.h"
00014 #include "Config.h"
00015 
00016 //----------------------------------------------------------------------------------------------------------------------
00017 //{ Прототипы
00018 //----------------------------------------------------------------------------------------------------------------------
00019 
00020 void txdrawGrafics    (double start, double finish, double (*func) (double x, const double kF[]),
00021                        COLORREF colour(), double increase, double radius,     const double kF[]);
00022 
00023 void alphaBlend       (double x, double y, double width, double height,
00024                        HDC image, double xImage, double yImage, double widthOriginal, double heightOriginal, double alpha,
00025                        int pictureN);
00026 
00027 double parabola       (double x, const double kF[]);
00028 double liner          (double x, const double kF[]);
00029 double parabola_3     (double x, const double kF[]);
00030 double parabola_4     (double x, const double kF[]);
00031 double arc            (double x, const double kF[]);
00032 double big_arc        (double x, const double kF[]);
00033 double some_sin       (double x, const double kF[]);
00034 double more_parabols  (double x, const double kF[]);
00035 double big_sin        (double x, const double kF[]);
00036 double scliff         (double x, const double kF[]);
00037 double rope           (double x, const double kF[]);
00038 double waves          (double x, const double kF[]);
00039 double big_waves      (double x, const double kF[]);
00040 double radio_waves    (double x, const double kF[]);
00041 double forest         (double x, const double kF[]);
00042 double small_forest   (double x, const double kF[]);
00043 double rainforest     (double x, const double kF[]);
00044 double big_rainforest (double x, const double kF[]);
00045 double sinus          (double x, const double kF[]);
00046 double cosinus        (double x, const double kF[]);
00047 
00048 COLORREF GREEN();
00049 COLORREF LIGHTGREEN();
00050 COLORREF BLUE();
00051 COLORREF LIGHTBLUE();
00052 COLORREF RED();
00053 COLORREF LIGHTRED();
00054 COLORREF CYAN();
00055 COLORREF LIGHTCYAN();
00056 COLORREF MAGENTA();
00057 COLORREF LIGHTMAGENTA();
00058 COLORREF PINK();
00059 COLORREF YELLOW();
00060 COLORREF ORANGE();
00061 COLORREF BROWN();
00062 COLORREF WHITE();
00063 COLORREF BLACK();
00064 COLORREF DARKGREY();
00065 COLORREF LIGHTGREY();
00066 COLORREF GREY();
00067 COLORREF MULTICOLOUR();
00068 
00069 void Pen();
00070 
00071 //}
00072 //----------------------------------------------------------------------------------------------------------------------
00073 
00074 namespace { namespace TX { namespace Win32 {
00075 _TX_DLLIMPORT ("GDI32", HRGN, CreateRectRgn, (int x0, int y0, int x1, int y1));
00076 }}}
00077 
00078 //----------------------------------------------------------------------------------------------------------------------
00079 //{  Функции
00080 //----------------------------------------------------------------------------------------------------------------------
00081 
00082 void txdrawGrafics (double start, double finish, double (*func) (double x, const double kF[]),
00083                      COLORREF colour(),    double increase, double /*radius*/, const double kF[])
00084     {
00085     double oldX = -11.35;
00086     double oldY = -11.35;
00087 
00088     txSetFillColour (TX_BLACK);
00089 
00090     HRGN region = Win32::CreateRectRgn (LeftOfTheGrafic, TopOfTheGrafic, RightOfTheGrafic, BottomOfTheGrafic);
00091     Win32::SelectObject (txDC(), region);
00092 
00093     double x = start;
00094     while (x <= finish)
00095         {
00096         txSetColour (colour(), 3);
00097 
00098         double y = func (x, kF);
00099 
00100         double grX =  x * Step + Xcentre;
00101         double grY = -y * Step + Ycentre;
00102 
00103         txLine (oldX, oldY, grX, grY);
00104 
00105         oldX = grX;
00106         oldY = grY;
00107 
00108         x += increase;
00109         }
00110 
00111     HRGN fullRegion = Win32::CreateRectRgn (0, 0, txGetExtentX(), txGetExtentY());
00112     Win32::SelectObject (txDC(), fullRegion);
00113 
00114     Win32::DeleteObject (region);
00115     }
00116 
00117 //----------------------------------------------------------------------------------------------------------------------
00118 
00119 void alphaBlend (double x, double y, double width, double height,
00120                  HDC image, double xImage, double yImage, double widthOriginal, double heightOriginal, double alpha, int pictureN)
00121     {
00122     BLENDFUNCTION blend = { AC_SRC_OVER, 0, (BYTE) ROUND (alpha * 255), AC_SRC_ALPHA};
00123 
00124     if (pictureN == 2) width = width * 2;
00125 
00126     txGDI (Win32::AlphaBlend (txDC(), ROUND (x), ROUND (y), ROUND (width), ROUND (height),
00127            image, ROUND (xImage),  ROUND (yImage),  ROUND (widthOriginal), ROUND (heightOriginal), blend), txDC());
00128     }
00129 
00130 //----------------------------------------------------------------------------------------------------------------------
00131 
00132 void Pen()
00133     {
00134     HPEN pen = Win32::CreatePen (PS_DOT, 1, TX_RED);
00135 
00136     txSelectObject (pen);
00137     }
00138 
00139 //----------------------------------------------------------------------------------------------------------------------
00140 //{ Функции графиков
00141 //----------------------------------------------------------------------------------------------------------------------
00142 
00143 /*
00144 double parabola (double x, double k, double b, double c)
00145     {
00146     return k * x*x + b*x + c;
00147     }
00148 */
00149 
00150 double parabola (double x, const double kF[])
00151     {
00152     double k = kF [2];
00153     double b = kF [1];
00154     double c = kF [0];
00155 
00156     return k * x*x + b * x + c;
00157     }
00158 
00159 //---------------------------------------------------------------------------------------------------------------------
00160 
00161 double liner (double x, const double kF[])
00162     {
00163     return kF [1] * x + kF [0];
00164     }
00165 
00166 //---------------------------------------------------------------------------------------------------------------------
00167 
00168 double parabola_3 (double x, const double kF[])
00169     {
00170     return kF [2] * x*x*x + kF [1] / kF [0];
00171     }
00172 
00173 //---------------------------------------------------------------------------------------------------------------------
00174 
00175 double parabola_4 (double x, const double kF[])
00176     {
00177     return kF [2] * x*x*x*x + kF [1] / kF [0];
00178     }
00179 
00180 //---------------------------------------------------------------------------------------------------------------------
00181 
00182 double arc (double x, const double kF[])
00183     {
00184     double k = kF [2];
00185     double b = kF [1];
00186     double c = kF [0];
00187 
00188     return k * x*x/10 + b*x + c;
00189     }
00190 
00191 //------------------------------------------------------------------------------------------------------------------------------------
00192 
00193 double big_arc (double x, const double kF[])
00194     {
00195     return kF [2] * x*x/100 + kF [1] + kF [0];
00196     }
00197 
00198 //---------------------------------------------------------------------------------------------------------------------------------
00199 
00200 double some_sin (double x, const double kF[])
00201     {
00202     double k = kF [2];
00203     double b = kF [1];
00204     double c = kF [0];
00205 
00206     return k  * sin (x) * sin (x) * cos (x) + b * x + c;
00207     }
00208 
00209 //------------------------------------------------------------------------------------------------------------------------------------
00210 
00211 double more_parabols (double x, const double kF[])
00212     {
00213     return kF [2] * sin (x) / sin (x) / cos (x) + kF [1]*x + kF [0];
00214     }
00215 
00216 //---------------------------------------------------------------------------------------------------------------------------
00217 
00218 double big_sin (double x, const double kF[])
00219     {
00220     return kF [2] * sin (x) / tan (x) + kF [1]*x + kF [0];
00221     }
00222 
00223 //-----------------------------------------------------------------------------------------------------------------------
00224 
00225 double scliff (double x, const double kF[])
00226     {
00227     return kF [2] * sin (x) / tan (x) + x * x / 10 + kF [1]*x + kF [0];
00228     }
00229 
00230 //----------------------------------------------------------------------------------------------------------------------------
00231 
00232 double rope (double x, const double kF[])
00233     {
00234     return kF [2] * sin (x) / tan (x) + x * x / 100 + kF [1]*x + kF [0];
00235     }
00236 
00237 //-----------------------------------------------------------------------------------------------------------------------------------
00238 
00239 double waves (double x, const double kF[])
00240     {
00241     return kF [2] * sin (x) / tan (x) * x * x / 70 + kF [1]*x + kF [0];
00242     }
00243 
00244 //----------------------------------------------------------------------------------------------------------------------------
00245 
00246 double big_waves (double x, const double kF[])
00247     {
00248     return kF [2] * sin (x) / tan (x) * x * x / 10 + kF [1]*x + kF [0];
00249     }
00250 
00251 //------------------------------------------------------------------------------------------------------------------------------
00252 
00253 double radio_waves (double x, const double kF[])
00254     {
00255     return kF [2] * sin (x) / tan (x) * x * x / 10* (x / 2 + x - (x/2)) + kF [1]*x + kF [0];
00256     }
00257 
00258 //-------------------------------------------------------------------------------------------------------------------------
00259 
00260 double forest (double x, const double kF[])
00261     {
00262     return kF [2] * x*x * tan (x) * sin (x) * cos (x)/10 + kF [1]*x + kF [0];
00263     }
00264 
00265 //---------------------------------------------------------------------------------------------------------------------------------
00266 double small_forest (double x, const double kF[])
00267     {
00268     return kF [2] * x*x * tan (x) * sin (x) * cos (x)/100 + kF [1]*x + kF [0];
00269     }
00270 
00271 //-------------------------------------------------------------------------------------------------------------------------------
00272 
00273 double rainforest (double x, const double kF[])
00274     {
00275     return kF [2] * x*x * tan (x) * sin (x) * cos (x) * 100 + kF [1]*x + kF [0];
00276     }
00277 
00278 //----------------------------------------------------------------------------------------------------------------------
00279 
00280 double big_rainforest (double x, const double kF[])
00281     {
00282     return kF [2] * x*x * tan (x) * sin (x) * cos (x) + x/x + kF [1]*x + kF [0];
00283     }
00284 
00285 //----------------------------------------------------------------------------------------------------------------------
00286 
00287 double sinus (double x, const double kF[])
00288     {
00289     return kF [2] * sin (x * kF [1]) + kF [0];
00290     }
00291 
00292 //----------------------------------------------------------------------------------------------------------------------
00293 
00294 double cosinus (double x, const double kF[])
00295     {
00296     return kF [2] * cos (x) + kF [1] / kF [0];
00297     }
00298 
00299 //----------------------------------------------------------------------------------------------------------------------
00300 //}
00301 
00302 //----------------------------------------------------------------------------------------------------------------------
00303 //{ Функции цветов
00304 //----------------------------------------------------------------------------------------------------------------------
00305 
00306 COLORREF GREEN()
00307     {
00308     return TX_GREEN;
00309     }
00310 
00311 //----------------------------------------------------------------------------------------------------------------------
00312 
00313 COLORREF LIGHTGREEN()
00314     {
00315     return TX_LIGHTGREEN;
00316     }
00317 
00318 //----------------------------------------------------------------------------------------------------------------------
00319 
00320 COLORREF YELLOW()
00321     {
00322     return TX_YELLOW;
00323     }
00324 
00325 //----------------------------------------------------------------------------------------------------------------------
00326 
00327 COLORREF ORANGE()
00328     {
00329     return TX_ORANGE;
00330     }
00331 
00332 //----------------------------------------------------------------------------------------------------------------------
00333 
00334 COLORREF RED()
00335     {
00336     return TX_RED;
00337     }
00338 
00339 //----------------------------------------------------------------------------------------------------------------------
00340 
00341 COLORREF LIGHTRED()
00342     {
00343     return TX_LIGHTRED;
00344     }
00345 
00346 //----------------------------------------------------------------------------------------------------------------------
00347 
00348 COLORREF BLUE()
00349     {
00350     return TX_BLUE;
00351     }
00352 
00353 //----------------------------------------------------------------------------------------------------------------------
00354 
00355 COLORREF LIGHTBLUE()
00356     {
00357     return TX_LIGHTBLUE;
00358     }
00359 
00360 //----------------------------------------------------------------------------------------------------------------------
00361 
00362 COLORREF PINK()
00363     {
00364     return TX_PINK;
00365     }
00366 
00367 //----------------------------------------------------------------------------------------------------------------------
00368 
00369 COLORREF WHITE()
00370     {
00371     return TX_WHITE;
00372     }
00373 
00374 //----------------------------------------------------------------------------------------------------------------------
00375 
00376 COLORREF BLACK()
00377     {
00378     return TX_BLACK;
00379     }
00380 
00381 //----------------------------------------------------------------------------------------------------------------------
00382 
00383 COLORREF BROWN()
00384     {
00385     return TX_BROWN;
00386     }
00387 
00388 //----------------------------------------------------------------------------------------------------------------------
00389 
00390 COLORREF LIGHTGREY()
00391     {
00392     return TX_LIGHTGREEN;
00393     }
00394 
00395 //----------------------------------------------------------------------------------------------------------------------
00396 
00397 COLORREF DARKGREY()
00398     {
00399     return TX_DARKGREY;
00400     }
00401 
00402 //----------------------------------------------------------------------------------------------------------------------
00403 
00404 COLORREF MAGENTA()
00405     {
00406     return TX_MAGENTA;
00407     }
00408 
00409 //----------------------------------------------------------------------------------------------------------------------
00410 
00411 COLORREF LIGHTCYAN ()
00412     {
00413     return TX_LIGHTCYAN;
00414     }
00415 
00416 //----------------------------------------------------------------------------------------------------------------------
00417 
00418 COLORREF LIGHTMAGENTA()
00419     {
00420     return TX_LIGHTMAGENTA;
00421     }
00422 
00423 //----------------------------------------------------------------------------------------------------------------------
00424 
00425 COLORREF CYAN()
00426     {
00427     return TX_CYAN;
00428     }
00429 
00430 //----------------------------------------------------------------------------------------------------------------------
00431 
00432 COLORREF MULTICOLOUR()
00433     {
00434     return rand() * rand()/64;
00435     }
00436 
00437 //}
00438 //}
00439 //----------------------------------------------------------------------------------------------------------------------