ES-DE/external/CImg/examples/jawbreaker.cpp

236 lines
11 KiB
C++
Raw Normal View History

/*
#
# File : jawbreaker.cpp
# ( C++ source file )
#
# Description : A funny game featuring small colored balls.
# This file is a part of the CImg Library project.
# ( http://cimg.eu )
#
# Copyright : David Tschumperlé
# ( http://tschumperle.users.greyc.fr/ )
#
# License : CeCILL v2.0
# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html )
#
# This software is governed by the CeCILL license under French law and
# abiding by the rules of distribution of free software. You can use,
# modify and/ or redistribute the software under the terms of the CeCILL
# license as circulated by CEA, CNRS and INRIA at the following URL
# "http://www.cecill.info".
#
# As a counterpart to the access to the source code and rights to copy,
# modify and redistribute granted by the license, users are provided only
# with a limited warranty and the software's author, the holder of the
# economic rights, and the successive licensors have only limited
# liability.
#
# In this respect, the user's attention is drawn to the risks associated
# with loading, using, modifying and/or developing or reproducing the
# software by the user in light of its specific status of free software,
# that may mean that it is complicated to manipulate, and that also
# therefore means that it is reserved for developers and experienced
# professionals having in-depth computer knowledge. Users are therefore
# encouraged to load and test the software's suitability as regards their
# requirements in conditions enabling the security of their systems and/or
# data to be ensured and, more generally, to use and operate it in the
# same conditions as regards security.
#
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL license and that you accept its terms.
#
*/
#include "CImg.h"
using namespace cimg_library;
#undef min
#undef max
// Main procedure
//----------------
int main(int argc, char **argv) {
// Display help (if option '-h' or '--help' specified) and retrieve program arguments
cimg_usage("A small and funny game featuring colored balls.\n (by David Tschumperlé).");
const char *score_file = cimg_option("-s",(char*)0,"Specify score file to use (0=default file).");
cimg_help("\n"
"** Quick Help *********************************************************\n\n"
"Goal : Delete the board by clicking on groups of adjacent colored balls\n"
" (a group is made of at least two balls with the same color).\n"
" Suppressing large sets gives higher scores.\n\n"
"In-game keys : - BACKSPACE or SPACE = Undo last move\n"
" - CTRL+F = Toggle fullscreen mode\n"
" - ESC = Quit application\n"
" - Q = End current game\n\n"
"*********************************************************************");
// Load score file if available
CImgList<unsigned int> score_history;
char filename_history[1024];
std::sprintf(filename_history,"%s%s",score_file?"":cimg::temporary_path(),score_file?score_file:"/jawbreaker.score");
std::FILE *file = std::fopen(filename_history,"r");
if (file) { std::fclose(file); score_history = CImg<unsigned int>::get_load_dlm(filename_history)<'y'; }
// Create ball graphics
const unsigned int W = 12, H = 14, Wi = (W<<5), Hi = (H<<5);
unsigned int score = 0, previous_score = 0, shape_score = 0,
best_score = score_history?score_history.max():0U;
const CImg<> colors(3,7,1,1, 255,255,255, 205,0,230, 0,235,0, 235,255,0, 235,0,0, 0,128,255, 450,350,300);
const unsigned char
white[] = { 255,255,255 }, orange[] = { 255,128,64 }, yellow[] = { 255,255,64 }, red[] = { 255,64,64 }, six = 6;
CImgList<> balls0(7,32,32,1,3,0);
cimglist_for(balls0,l) if (l) {
balls0[l].draw_circle(16,16,14,colors.data(0,l));
cimg_forXYC(balls0[l],x,y,k) if (balls0(l,x,y,k)) (balls0(l,x,y,k)*=(32 - x + y)/60.0f)+=20;
balls0[l].draw_circle(16,16,14,colors.data(0,l),0.5f,~0U).
draw_circle(20,10,5,colors.data(),0.2f).draw_circle(22,8,2,colors.data(),0.4f).cut(0,255);
}
// Create background graphics
CImgList<unsigned char> balls(balls0);
CImg<unsigned char>
mask = balls[1].get_cut(0,1).channel(0).dilate(3),
background = CImg<unsigned char>(Wi,Hi,1,3,0).
noise(255,1).blur(6,20,0,true).equalize(100,0,255).blur(2,4,0,true);
background.get_shared_channel(0)/=4; background.get_shared_channel(1)/=8; background.get_shared_channel(2)/=2;
// Begin user-interaction loop.
CImg<unsigned char> board, previous_board, selected_board, shape, img(background);
CImgDisplay disp(img.width(),img.height(),"Jawbreaker",0);
bool redraw = true, gameover = false, title = true;
Squashed 'external/CImg/' changes from c0becdf88..4d061dcd6 4d061dcd6 math_parser(): Add function 'map()'. ac599e123 . b9fa7354f . 673cfe3d5 math_parser(): add mutex to protect access to image list statistics. 862b2c7b1 Fix bug in math evaluator function 'find()', and improve 'colormap' in 'full-colormap' mode. 44b1d556c draw_text(): Fix (non-standard) passing reference to va_start() macro. 6db20df4f . 03b2203ea . f9619587b math_parser::da_remove(): Improve error message when trying to remove element in empty dynamic array. 3486b3ee7 Remove unused version of _sprintf(). 07040bb0e Fix warning about using 'vsprintf()' with clang-12. 5f667e2c7 . e6c7b23c9 . 099447df4 . e89b77dfa . 1d5505416 . 163cf1caa . 40a666909 . 86e55504c . 381ba0bfa . b886800ad . 31648450a . 2e82b7cd9 . 2daf2862f . c6e4360df . 6c94a6b20 . d212c0ce3 . 5ff6f38d5 . 3e7a4f21d . ccf1db65e . a411cc180 . e0018918b . 23903475c . 6a8b81169 Command 'text': Custom font can be specified. a2dea0866 . d31902272 Fix bug in 3D convolution operator. 210b728a3 math_parser(): add new predefined variable 'v' (eq. to 'u(-1,-1)'). b030ea4e6 math_parser() : Fix parsing arguments for function 'permut()'. f90e52c4d math_parser: Allow 'norm()' to return a const value when possible. 17b8f5bb5 . 6ffe10e13 . 3c7b877b3 Improve inner/outer parallelization decision in 'correlate/convolve' methods. 56e2268b4 . f4eeec4d2 . 00ce10760 . bf0f5dcb2 . 45df40a35 . 43950e631 . a73a2f129 . 1d033f1da math_parser: Start implementation of function 'offset()'. 0f673c279 . 59a34f2fe . 815c40021 . 422d6ecc3 . b0ab9037b . e2af0d091 . b41f7850e . aebccaad9 . 9d60f335e . c65104e8c . 9ac2b7ae1 . 43558edca . 6cd4e15e6 . fc2ca5606 . aa5b1149b math_parser: Refactor function 'draw()', and prepare for variant that draws in vector-valued variables. 6c47625f3 . 8d1bbe3ef . d5fcd765c . 6c43cf325 . 0d54f89e7 . 56cc9a806 . 60411ef05 . 009594d2d . acf1a2a70 . 8d3bfe7fc . 7078e25a5 . 3d56cac0c . ea0074152 . 4977f9500 math_parser: Prepare code for implementing 'crop()' on vector-valued variables. 382ad1b59 . 8834a487e cimg_math_parser(): Be more strict in the use of vector-valued arguments for some functions. c33802810 . 4b3653922 Remove useless test with 'is_relative' for math_parser's function. 732986f3e . 94f12f994 Allow creation of animated .gif with transparent backgrounds. f3a5ba719 . 866b6d752 . f2dc3ef7b Fix issue #368. 55ff59944 . 386fd1871 . a456e9010 . 28a857b69 . 110ca2d87 . 404303418 . 2e2e0c5e8 . bf7b13196 . 91b63f722 . be47c0a33 . 7d232bdbf . e6012687d Merge pull request #367 from GreycLab/master 642cebcfd . f650e941d . 50a4ab03f . cdedc97f8 . 9ec047a1b . 65c462cab . 2eb56a718 Merge pull request #366 from marsh0/develop a8939b6ef . 334b3e9c1 Fixed unsigned int 64 to unsigned int warning 8e72d80fd . e3cc84697 . b1c13dfc5 . fb79a9d3e Improve computation of matrix pseudoinverse with LU solver. 76fae2fcd Add option 'use_LU' to command 'solve' and math function 'solve()'. bb03df435 . d86916333 Merge commands and math functions 'invert' and 'pseudoinvert'. 49f61eb8a Merge commands and math functions 'invert' and 'pseudoinvert'. a63492bcd Merge commands and math functions 'invert' and 'pseudoinvert'. a403c817e Add 'lambda' option to the various 'pseudoinvert()' functions. ca21c1d73 . e0a825b1a . 931b498a5 . 9112b4711 . f52871859 . 31dabfb13 Start work on next version 3.2.0. 1e1078317 . 7f3157a04 . 03f877161 _cimg_math_parser(): Slightly change behavior of 'isin()' to allow testing vectors. c63cf71c7 . 1921b379a . ec000cd2e cimg_math_parser(): Fix bug in accessing predefined variables 'i0,...i9'. c3cef822b Merge branch 'master' of github.com:GreycLab/CImg a28648518 . 9a0f19ded cimg_math_parser(): Fix incorrect handling of 'yM' (regression). bbad387b3 Merge pull request #359 from bkmgit/ci c5dcd933e Add badge with build status b3059fa96 Update branch name bd0eff91d Merge branch 'master' of github.com:GreycLab/CImg c6f53e867 _cimg_math_parser(): New predefined variable 'id' (std of current image). 7d5619934 Merge pull request #358 from bkmgit/ci db2e449fd Add 3 new postcards. 21c168170 Fix wrong detection of multi-threaded expression error in 'CImg<T>::fill()'. ecfc076a5 Update MacOS dependencies 67ce48f35 Update MacOS dependencies 9c14a9000 Update MacOS dependencies 4184a25ba Update dependencies 813ed36bc Update dependencies 94b62e7fb More formatting fixes ab395bb38 Formatting fixes 052e71ba7 Enable testing 3405584e2 . 5ad3d1af1 Add math parser function 'da_freeze'. f53b5ab9c . 957ecc309 . 5934122c9 Add postcard #77. cb93f21c1 Add postcard #77. 2835ec2e2 . 27ffac840 . f68f333dd . f25f7e1e8 . 80e582a0c . 406fbd072 Merge pull request #355 from Poohl/develop a580234ef font size doc ae654a628 Final release 3.1.4 e35d78341 Auto-commit for release 3.1.4_pre 54ff2d7af . 25bd0c3c6 . 3bb6458fc Simplify error handling in 'get()'. 39b4f963a . 568b34c4a Make 'swap()' return 'nan'. 0cdfb6714 Make 'set()' return 'nan'. 69a03bf83 Make 'copy()' return 'nan'. da854d5ae Invert argument order in math function 'store()'. 8f493f7cd Invert argument order in math function 'set()'. 6f1ea6eab . e82ed2c61 . f511bb5c8 . a35cb93e7 . a452d475c . 2bc84810b . ab4381619 Merge pull request #353 from amyspark/amyspark/support-msvc aa4455fe4 Support MSVC's OpenMP 2.0 5f26c8745 . 6f8ee7c07 . a01439210 Change variable name '_res' to '_resu' to avoid conflict with other badly written libraries. 480b2f0fb Add command 'eye'. 921772323 Start work on 3.1.3 version. 21ba6b4db . 8637d8f4d Define 'cimg_max_buf_size' to another value for 32-bits architectures. d8bb494d6 Define 'cimg_max_buf_size' to another value for 32-bits architectures. e8affb299 . 47e249d38 Fix bug with 'break'. 8fe779e8a Final release 3.1.1 e01419fc5 . 52b3d735a . c4ddd6131 Update plug-in 'cvMat.h'. 104cfb8a6 Start 3.1.1: Fix possible misinterpretation of arithmetic expression in ':=' assignment. 1d1c75c36 . bc010ab25 . d27c30fe1 . 254a4cf7b . 5801be3d2 Merge pull request #348 from 7unn3l/master 37cf0c1e5 add global hardening against RAM exhaustions in safe_size 6b78c3b3f . 7b7688dc8 . c3c8c22d6 . 471083bbd . efd8d2965 . 577bf7b50 . 9d03892e3 . f8dba12b8 . 3ca5dcea2 . 29bdc1dce . a63b71bf0 . 22f226f4c . 761d5c085 . 1665172bb . c7ee7bc9b . 193abd7b2 Add macro 'cimg_max_file_size' to control maximum allowed file size when reading image files. 0f7f7fb45 . 619cb58dd CImg<>::load_bmp() and CImg<>::load_pandore(): Check that dimensions encoded in file does not exceed file size. d0f152d53 Fix offset issue when dealing with large images in 'CImg<T>::erode()' and 'CImg<T>::dilate()'. 607aea7c8 Fix 'get()' in math parser. 8824c078d . 0da4cb0ac . d9a56919a . 52bc43848 . a02df736a Allow command 'store' to manage bigger images. 0cf328ab6 . d54761b9b . 72e5e6314 Remove unused variables in 'CImg<T>::opening()' and 'CImg<T>::closing()' 466022095 Format code to 120 max char./line. 790710040 Merge pull request #340 from amyspark/amyspark/powershell 712078d3f load_network: add Powershell fallback for Windows e7eb920b7 . fc6ba0eec Add 'CImg<T>::otsu()'. 8404b81a0 . 877ba9da8 CImg<T>::opening() and CImg<T>::closing(): Use min/max of type T rather than min/max of image values, for initialization. 3cd82ea4f Add methods 'CImg<T>::opening()' and 'CImg<T>::get_opening()' 640195d02 Add methods 'CImg<T>::closing()' and 'CImg<T>::get_closing()' 94a7c7f13 . 4171fb912 . b5f2177c5 . 3200701db . fddf9334f . 555019468 . 353cd8fbe . c864cb0ac . 97c2923c0 . 366977648 . 66261e676 . baf9a8009 . a87a42217 . 2e99e630c . 23c738e85 . 8a17cb81a . 8b23cf36b . 1190e3f98 . ae4c10e71 . b6febab4c . 891d91621 Fix libtiff compilation issues with uint16_t and uint32 datatypes. ee4dc2f93 . 1189d5050 . 0a260f407 . 983c502b4 . 376ac7316 . d51bccfce . 82d6b436d . 3b7421231 Update README.md d7ea859fc . 4efbe8a4f . fb39f7c96 . abbcd69f2 . 5651a141f . 6816343ca . 96661b16f . 159baf24f Improve default image normalization behavior with CImgDisplay with integer types. 349274537 . 53cf0df32 Fix multithreading in 'structuretensors()' computation. 1bff57ea5 . 44df5b111 Fix compilation errors for type T=half. dd1139da4 . b4365b74b Auto-commit for release 3.0.3_pre 410a7eaad . 52cdaf7ff . e09678a3d Start work on 3.0.3. e15278726 Final release 3.0.2 927fee511 . 798007eaa . a7eebc5c4 . a27910604 . 032128ac2 . ac7980fc6 Start work on 3.0.2. 99a27d921 . ed6984ca2 . 51295de3e . 7c81d801c . d822b418f . bcdbaeb61 . 2798b9ea7 . a5465c18a . 8ad66d28d Final release 3.0.1 0a7c58232 . d67062b57 . b86e97ba5 . 0a346c624 _cimg_math_parser: Fix 'da_remove()' when used with multi-channel arrays. 6300c47a1 . 4cd0579d4 math_parser : Add functions 'printc()' and 'printcs()'. 0bda75c10 Fix #337. d3190b26f . c5b1a4ce0 Simplify _cimg_math_parser() by merging listin and listout into imglist variable. db7586fb4 . de80b8a82 . 93e45d310 [math-core-301] Fix floating point exception when functions da_*() are used with no images on the list. d4cc50b95 . f88c9148f . ba89271ed Final release 3.0.0 e6ef1ad73 . f687c4629 . 30991fb16 . 26e166b8d . c0995a47f . 3f4dc79a2 . 4d331435d . 64952efb9 . dbc19c290 . 9adb5bdb0 . f72d88d63 . 4d8ee52e6 . 73fef7018 . 175a53870 . e6cfba22a . 87bd9d126 . 10abd5fac . 00e896a07 . 1cffd322a . e2e9baab6 . b05d14e3e Add more boundary conditions to 'boxfilter'. c39bb2503 . aebc12a82 . fa5f067e0 . 63312e7d8 . a93108d4e Fix bug in 'correlate()'. e1e77b7c6 . 62bc6b134 math_parser, function merge(): check that specified variable is not a linked reference. 132bb175b . e0fd8a9b4 . 637eb4c2c . 237a1f4b8 . 481df9dbe . 8d502a5fe . 2ee5b1670 . 63a4fa78d . 5c4860ef3 math_parser: Add functions 'da_back()' and 'da_pop()'. 50c0d9839 math_parser: Add functions 'da_back()' and 'da_pop()'. 67f8c6e4b . 2d2c7f953 . bb98b67b7 . 6acf1c19e . c60635e01 . d6c50bfee . 9798f569d . 5f63bc3d8 . b2f29613e . f30babb43 . 920965b0d . 8e01f2833 . 93408dc74 . 6faf752ff . 5a1a2bd92 . bbecd96f2 . af9c0a434 . 035125b20 Fix CImg<T>::draw_triangle(), with color-interpolated triangles (Fix #332). 8f949732d . 22190d30e . bc0160d79 . c2022354d . 72378e8e3 . 04638b8cd . 527aa2233 . a6d4956bc . f09c2b145 . c967157af . bedf7d5ea . de0612004 . 62d3898a9 . 254d842ee . c0a74ff77 . 5c13300f3 . 2352831c1 . 6e5a14a23 . e020fdf47 . 60bf6e4ec . 4e9f06083 . a95a0dcdb . bd37c5755 . ba155fd42 . 1a6e02309 . f1ba20b82 . 04b3f1e29 . c9eabd65d . 7089938f6 . 47d3a2ea6 . bcf797fea . 04e037028 . 79ea94dd4 . 7bdd3f9ba . fbd0be3a1 . b4f703517 Start the work for supporting new type 'list' in math parser. f6860f51b Merge pull request #329 from Irgy0/master 41f0d3777 . 8eaf50b64 . 2b7e44e57 . 535924dca Set PNG interlacing on to avoid an error message when reading interlaced pngs. df4e034f8 . 6c051eb27 Improve detection of .raw files (CR2,NEF,DNG,ARW). 25aaf3850 . 48173196c Fix a few int-overflow bug that could happen in draw_line(). bcfe7c7b2 Start work on v.3.0.0. Fix bug in CImg<T>::draw_polygon() when large integers are used. cd95217c0 Final release 2.9.9 506fcb51b . b33dcc8f9 . 96114de6d . 25612a629 . 4ffd314d9 . 4314d6e25 . 90dba23bc . 06dc60988 . e3e62d883 Add a few optimized pattern detected to evaluate simple math expressions. c4a7e078a . 595c34a29 . 288e6b8d5 . c82328019 Optimize CImg<T>::_correlate(). 2d83233c4 Merge pull request #322 from xen0n/fix-f1996f1 70876dde3 . 3544285d1 Auto-commit for release 2.9.9_pre 5304630b6 . eb50adb88 Bump to development version 2.99 2d2731eb6 examples: probe for -mtune=generic support, fix wrong LoongArch support 2e01be63d . c89f21f73 . 2a1fc8892 . 1258803c0 . 06e7b4c50 . 69f88f3d3 . 634ec5cb7 . 9f8bcec92 . 6a80064f7 . c62788122 . a6d3453ca . e0ba6764e . b2b2587f6 . 82030f386 . 60c8331bc . 92933de51 . a021efcde . def3d2053 . c498c1d4a . bc62b89bb . 8485f6964 . 3778d6470 . 6642c07af . dbe72a293 . 48885df73 . ac0890316 . a1a0296e8 . d7fa86a15 . 62d4b793d . a154473a4 . 72d6622d2 . 4951ce53a . 4df351bda . 8488374fa . 6c5d95e91 . bd5ad98b0 . 4baff4a38 . 011cf98e9 . 46f09676f . f9fc7ec05 . 64214b216 . 2c6199e6c Optimize CImg<T>::_correlate(). 1ae6b689a . 6c7dab3a6 . 463a7a9e9 . 7ab29098f . 128d06351 . 0fb83de04 . 2f91d0522 . 64ae3ee54 . 025e85ea5 . c7ed44f42 . 91ef37e53 . f92c0ead4 . 29066e1b0 . 00c8c6ba7 . 5a408e8cc . 87226897c . 44b78c7fb . 0bfb8739b Merge pull request #321 from Lucky-Na/master f1996f10f delete -mtune option on loongarch architecture 3d72e8721 Fix variable prepending operator '..=' 499719e16 . 30a5cd2a0 . 43a6228be . 6dabed31d . 4fca316ed correlate() : Fix when used with 3x3,5x5 or 3x3x3 kernels and dirichlet boundary conditions. c72acfb3a cimg_math_parser() : Allow strings with blank characters to define empty 'begin[_t]()' and 'end[_t]()' blocs. 9423744d5 . 59ffa01f5 . b1816a335 . e29daa5b6 cimg_math_parser(): Fix argument counting in functions convolve()/correlate(). b9d347240 . 43af18673 . a79cada5f . 0275b3d84 . 2b0af18cf . bf67c30d8 . 6ca2fdcde . e38d56a2f . b14e79f6e Fix CImg<T>::convolve() and correlate() for channel_mode==0. a996c28cf Fix CImg<T>::convolve() and correlate() for channel_mode==0. 63d40db5e CImg<T>::convolve()/correlate() : Fix bug with small kernels and channel_mode==2. 8b2e46ca5 . d9e5e9551 _cimg_math_parser() : better manage inclusion of begin(), begin_t(), end() and end_t() blocs. 46f043f34 _cimg_math_parser() : allow begin(), begin_t(), end() and end_t() to have empty arguments, and fix possible bug with returned value when multiple end() separated by semicolons. 6fb8ca212 . 59464c694 _cimg_math_parsers(): Fix thread number when math expression is evaluated in parallel. f8cc94faa . 7c414c67b . 7232ea760 . 9aaf75076 CImg<T>::cimg_math_parser() : Add predefined variable T (max number of threads). ee59a3f87 . f5ff164b6 Add commands 'deg2rad' and 'rad2deg'. 28b0562b6 Add 'erf' function. f7308afab . d984ca0ea . 96eab6c69 Auto-commit for release 2.9.8_pre ae16ae5ef . be4612f61 . 87e8f38b7 cimg_math_parser : Add postfix operator '°' for degree to radian conversion. 6351adce1 . a68b594bd CImg<T>::_cimg_math_parser() : Add functions 'deg2rad()' and 'rad2deg()'. a95d03e8b . a285f0fca cimg_math_parser: Add function 'erfinv()' (Inverse of the gaussian error function). 948cc956c cimg_math_parser: Add function 'errf' (Gaussian error function). 340d0a4c8 . 55e370660 Fix #319 c00abf5f0 Command 'input' : when loading a tiff file, bit depth is now set to status. 7222933de Change 'bits_per_pixel' to 'bits_per_value' in CImg<T>::load_png(). 16979f3b3 . 5876d4f7d . 0d9a3c56c . 33a28fddf Temporary disable openmp clauses that slow down execution of CImg<T>::draw_text(). efa524d6d . b726708e6 Implementation of the operator$() in math parser. 5f4914222 Start support of '$varname' expressions in math parser. ad7ea9ef1 Improve comments. 0d1e92f3f factorizes the use of 'is_varname()' in 'cimg_math_parser'. 3039446df . 2c5628639 Make function echo() of the math parser accepts no arguments. 0fa6b92a5 . 5f15b8c60 . 37559271f . d079374d8 . d7bd9f018 . e68a184eb . 749bc70ab . f4b53f6e5 . cc3c1f1da . 14c95cc60 . 075a7225b . dd8888fe6 Auto-commit for release 2.9.8_pre b0f47208f . 68e98b6bf . 68dbb754b . 1a2ff4ed5 . 6c5f78646 . 1d51d0113 . aa0eaa35c . f6bf39296 . 771fed51f . ae07e9402 . c2ea55532 Simplify memtype values to avoid optimizations in mathparser. b0bf3f942 Merge branch 'master' of github.com:dtschump/CImg 218efcf9b . 670c4b96b . 91c79ddbe . b2364dfe6 . 70aaa01e7 . 2970997fc . 4d07ae7cc . 7c15e7916 . 8e381d9ef . 5bcba71c9 . fde76337e . 7886267e6 . 979de2c2a . f7d659758 . 30761a532 . bb00749e6 . 317e5ac5c . 38b70c3cf . 009203b1f . 3ad6a9ae5 . 0794bbb21 . 03781c95a Fix bug in 'draw_text()' when background color provided. 09b9509ae . b7cd009a5 . 65c6ddc16 . 29ab0faff . db81f5dd3 . 3645f4fe1 . 8bdba276f . f4138047f . 30f6b4b06 . 306e56fe6 . 9a1ba9432 . 515bd31a1 . 6ca343326 . 766163fb8 . 9a95c0580 Try to fix warning in _load_cimg(). c9ad21c03 . a5a6d8145 . 11b76c6be . acc89aa12 . 50830d050 . 79c98a562 . 4a7bb5179 . c4b3fa7de . 227ac1511 . 96918daa6 . 32b165ef3 . a66d1967a . 0b499d9ad Auto-commit for release 2.9.8_pre f1f7eb052 . 0f67297eb . a70a9fe8a Final release 2.9.7 f96abe1f9 . bbc902b73 . 9aafe8661 . 6e2fe28f8 . 84999fc90 . 50010156f . 070ded77c . b6b16a833 . 19cfa4a58 . df9386eb1 . 6d2e1b033 . 54362bece . 6b6563f80 . 3aea1583d . 72aebaf5a Merge pull request #307 from lrusak/heic 94427018a . 9546e99a6 . bd5588194 add heic and avif support via libheif 089aeaa1f . 54eb48990 . 1b0e54e4e . 7109b5f09 . e8aed2a42 . 8174e8777 . 338f4b6c4 . 1838aef33 . e48345ab6 . f30d034a9 . e15eac073 . b2129184e . d9ef878a2 . 5f4047615 . d3eb0c5eb . 2f7a1ebf1 . 90baf1b6b . e5084c208 . 391a440af . 70a4532a3 . eca1daace . 9efa52eb7 . 0cdc54bcf . a79a2f1c3 . de1205f66 . 063d9e09a . ec3f66877 . 324c7d1cc . 1244801b1 . 58196cec7 . 2363d1935 . ccc362050 . 5c98c31b0 . c6be2b83a . 8f79526f0 . 1ef7c78d7 . f913ffa5e . 7db6d0835 Merge pull request #295 from cleeus/fix-pnm-heap-overflows 4f184f89f Fix multiple heap buffer overflows 580d74777 . 755cf717a . ce329c07f . 33824c014 . 9978daaaf . f37b255ca . 1222eea73 . b8a7af571 Merge pull request #282 from Chuvi-w/FIX_VTK 96e5c9e14 Fix syntax error in vtk.h ea2b86fef . 833b1a589 . 654d46278 . 15d25b190 . d6955b5e9 . 3f2b7a3a7 . 612044515 . 6f3cacdc3 . 94f6b51e5 . e0763f2fd . 8f0dcc789 . d069d8048 . d501aa3a0 . 9bcfc5b8c . 3a6cd9df0 . 46def454c Merge pull request #263 from UlysseV/MC_improvement 16f2496b6 change func call pattern for isoline3D d577a6b28 change func call pattern f71695057 . fffee0ae0 . c15123bff . d0257a2f9 . 01edd73e1 . bb02b35ea . 92b407d53 . b26716f3b Merge branch 'master' of github.com:dtschump/CImg bc2446460 . a93c51b98 . ecc8b7337 . c3960f08f . f77588f32 Merge pull request #253 from dtschump/develop git-subtree-dir: external/CImg git-subtree-split: 4d061dcd67c08e9a36a01875e78b53ee86501dd7
2023-01-06 10:47:13 +00:00
for (float opac = 0.0f; !disp.is_closed(); ) {
// Init board
if (!board) {
(++((board.assign(W,H,1,1,5).noise(5,1))%=5)).get_shared_row(0).fill(0);
opac = (float)(score = previous_score = shape_score = 0);
gameover = false; redraw = title = true;
previous_board = board;
}
// Draw graphical board
if (redraw) {
(img=background).draw_text(2,2,"Score : %u",yellow,0,0.7f,24,score).
draw_text(Wi - 90,2,"Best : %u",orange,0,0.9f,17,best_score);
Squashed 'external/CImg/' changes from c0becdf88..4d061dcd6 4d061dcd6 math_parser(): Add function 'map()'. ac599e123 . b9fa7354f . 673cfe3d5 math_parser(): add mutex to protect access to image list statistics. 862b2c7b1 Fix bug in math evaluator function 'find()', and improve 'colormap' in 'full-colormap' mode. 44b1d556c draw_text(): Fix (non-standard) passing reference to va_start() macro. 6db20df4f . 03b2203ea . f9619587b math_parser::da_remove(): Improve error message when trying to remove element in empty dynamic array. 3486b3ee7 Remove unused version of _sprintf(). 07040bb0e Fix warning about using 'vsprintf()' with clang-12. 5f667e2c7 . e6c7b23c9 . 099447df4 . e89b77dfa . 1d5505416 . 163cf1caa . 40a666909 . 86e55504c . 381ba0bfa . b886800ad . 31648450a . 2e82b7cd9 . 2daf2862f . c6e4360df . 6c94a6b20 . d212c0ce3 . 5ff6f38d5 . 3e7a4f21d . ccf1db65e . a411cc180 . e0018918b . 23903475c . 6a8b81169 Command 'text': Custom font can be specified. a2dea0866 . d31902272 Fix bug in 3D convolution operator. 210b728a3 math_parser(): add new predefined variable 'v' (eq. to 'u(-1,-1)'). b030ea4e6 math_parser() : Fix parsing arguments for function 'permut()'. f90e52c4d math_parser: Allow 'norm()' to return a const value when possible. 17b8f5bb5 . 6ffe10e13 . 3c7b877b3 Improve inner/outer parallelization decision in 'correlate/convolve' methods. 56e2268b4 . f4eeec4d2 . 00ce10760 . bf0f5dcb2 . 45df40a35 . 43950e631 . a73a2f129 . 1d033f1da math_parser: Start implementation of function 'offset()'. 0f673c279 . 59a34f2fe . 815c40021 . 422d6ecc3 . b0ab9037b . e2af0d091 . b41f7850e . aebccaad9 . 9d60f335e . c65104e8c . 9ac2b7ae1 . 43558edca . 6cd4e15e6 . fc2ca5606 . aa5b1149b math_parser: Refactor function 'draw()', and prepare for variant that draws in vector-valued variables. 6c47625f3 . 8d1bbe3ef . d5fcd765c . 6c43cf325 . 0d54f89e7 . 56cc9a806 . 60411ef05 . 009594d2d . acf1a2a70 . 8d3bfe7fc . 7078e25a5 . 3d56cac0c . ea0074152 . 4977f9500 math_parser: Prepare code for implementing 'crop()' on vector-valued variables. 382ad1b59 . 8834a487e cimg_math_parser(): Be more strict in the use of vector-valued arguments for some functions. c33802810 . 4b3653922 Remove useless test with 'is_relative' for math_parser's function. 732986f3e . 94f12f994 Allow creation of animated .gif with transparent backgrounds. f3a5ba719 . 866b6d752 . f2dc3ef7b Fix issue #368. 55ff59944 . 386fd1871 . a456e9010 . 28a857b69 . 110ca2d87 . 404303418 . 2e2e0c5e8 . bf7b13196 . 91b63f722 . be47c0a33 . 7d232bdbf . e6012687d Merge pull request #367 from GreycLab/master 642cebcfd . f650e941d . 50a4ab03f . cdedc97f8 . 9ec047a1b . 65c462cab . 2eb56a718 Merge pull request #366 from marsh0/develop a8939b6ef . 334b3e9c1 Fixed unsigned int 64 to unsigned int warning 8e72d80fd . e3cc84697 . b1c13dfc5 . fb79a9d3e Improve computation of matrix pseudoinverse with LU solver. 76fae2fcd Add option 'use_LU' to command 'solve' and math function 'solve()'. bb03df435 . d86916333 Merge commands and math functions 'invert' and 'pseudoinvert'. 49f61eb8a Merge commands and math functions 'invert' and 'pseudoinvert'. a63492bcd Merge commands and math functions 'invert' and 'pseudoinvert'. a403c817e Add 'lambda' option to the various 'pseudoinvert()' functions. ca21c1d73 . e0a825b1a . 931b498a5 . 9112b4711 . f52871859 . 31dabfb13 Start work on next version 3.2.0. 1e1078317 . 7f3157a04 . 03f877161 _cimg_math_parser(): Slightly change behavior of 'isin()' to allow testing vectors. c63cf71c7 . 1921b379a . ec000cd2e cimg_math_parser(): Fix bug in accessing predefined variables 'i0,...i9'. c3cef822b Merge branch 'master' of github.com:GreycLab/CImg a28648518 . 9a0f19ded cimg_math_parser(): Fix incorrect handling of 'yM' (regression). bbad387b3 Merge pull request #359 from bkmgit/ci c5dcd933e Add badge with build status b3059fa96 Update branch name bd0eff91d Merge branch 'master' of github.com:GreycLab/CImg c6f53e867 _cimg_math_parser(): New predefined variable 'id' (std of current image). 7d5619934 Merge pull request #358 from bkmgit/ci db2e449fd Add 3 new postcards. 21c168170 Fix wrong detection of multi-threaded expression error in 'CImg<T>::fill()'. ecfc076a5 Update MacOS dependencies 67ce48f35 Update MacOS dependencies 9c14a9000 Update MacOS dependencies 4184a25ba Update dependencies 813ed36bc Update dependencies 94b62e7fb More formatting fixes ab395bb38 Formatting fixes 052e71ba7 Enable testing 3405584e2 . 5ad3d1af1 Add math parser function 'da_freeze'. f53b5ab9c . 957ecc309 . 5934122c9 Add postcard #77. cb93f21c1 Add postcard #77. 2835ec2e2 . 27ffac840 . f68f333dd . f25f7e1e8 . 80e582a0c . 406fbd072 Merge pull request #355 from Poohl/develop a580234ef font size doc ae654a628 Final release 3.1.4 e35d78341 Auto-commit for release 3.1.4_pre 54ff2d7af . 25bd0c3c6 . 3bb6458fc Simplify error handling in 'get()'. 39b4f963a . 568b34c4a Make 'swap()' return 'nan'. 0cdfb6714 Make 'set()' return 'nan'. 69a03bf83 Make 'copy()' return 'nan'. da854d5ae Invert argument order in math function 'store()'. 8f493f7cd Invert argument order in math function 'set()'. 6f1ea6eab . e82ed2c61 . f511bb5c8 . a35cb93e7 . a452d475c . 2bc84810b . ab4381619 Merge pull request #353 from amyspark/amyspark/support-msvc aa4455fe4 Support MSVC's OpenMP 2.0 5f26c8745 . 6f8ee7c07 . a01439210 Change variable name '_res' to '_resu' to avoid conflict with other badly written libraries. 480b2f0fb Add command 'eye'. 921772323 Start work on 3.1.3 version. 21ba6b4db . 8637d8f4d Define 'cimg_max_buf_size' to another value for 32-bits architectures. d8bb494d6 Define 'cimg_max_buf_size' to another value for 32-bits architectures. e8affb299 . 47e249d38 Fix bug with 'break'. 8fe779e8a Final release 3.1.1 e01419fc5 . 52b3d735a . c4ddd6131 Update plug-in 'cvMat.h'. 104cfb8a6 Start 3.1.1: Fix possible misinterpretation of arithmetic expression in ':=' assignment. 1d1c75c36 . bc010ab25 . d27c30fe1 . 254a4cf7b . 5801be3d2 Merge pull request #348 from 7unn3l/master 37cf0c1e5 add global hardening against RAM exhaustions in safe_size 6b78c3b3f . 7b7688dc8 . c3c8c22d6 . 471083bbd . efd8d2965 . 577bf7b50 . 9d03892e3 . f8dba12b8 . 3ca5dcea2 . 29bdc1dce . a63b71bf0 . 22f226f4c . 761d5c085 . 1665172bb . c7ee7bc9b . 193abd7b2 Add macro 'cimg_max_file_size' to control maximum allowed file size when reading image files. 0f7f7fb45 . 619cb58dd CImg<>::load_bmp() and CImg<>::load_pandore(): Check that dimensions encoded in file does not exceed file size. d0f152d53 Fix offset issue when dealing with large images in 'CImg<T>::erode()' and 'CImg<T>::dilate()'. 607aea7c8 Fix 'get()' in math parser. 8824c078d . 0da4cb0ac . d9a56919a . 52bc43848 . a02df736a Allow command 'store' to manage bigger images. 0cf328ab6 . d54761b9b . 72e5e6314 Remove unused variables in 'CImg<T>::opening()' and 'CImg<T>::closing()' 466022095 Format code to 120 max char./line. 790710040 Merge pull request #340 from amyspark/amyspark/powershell 712078d3f load_network: add Powershell fallback for Windows e7eb920b7 . fc6ba0eec Add 'CImg<T>::otsu()'. 8404b81a0 . 877ba9da8 CImg<T>::opening() and CImg<T>::closing(): Use min/max of type T rather than min/max of image values, for initialization. 3cd82ea4f Add methods 'CImg<T>::opening()' and 'CImg<T>::get_opening()' 640195d02 Add methods 'CImg<T>::closing()' and 'CImg<T>::get_closing()' 94a7c7f13 . 4171fb912 . b5f2177c5 . 3200701db . fddf9334f . 555019468 . 353cd8fbe . c864cb0ac . 97c2923c0 . 366977648 . 66261e676 . baf9a8009 . a87a42217 . 2e99e630c . 23c738e85 . 8a17cb81a . 8b23cf36b . 1190e3f98 . ae4c10e71 . b6febab4c . 891d91621 Fix libtiff compilation issues with uint16_t and uint32 datatypes. ee4dc2f93 . 1189d5050 . 0a260f407 . 983c502b4 . 376ac7316 . d51bccfce . 82d6b436d . 3b7421231 Update README.md d7ea859fc . 4efbe8a4f . fb39f7c96 . abbcd69f2 . 5651a141f . 6816343ca . 96661b16f . 159baf24f Improve default image normalization behavior with CImgDisplay with integer types. 349274537 . 53cf0df32 Fix multithreading in 'structuretensors()' computation. 1bff57ea5 . 44df5b111 Fix compilation errors for type T=half. dd1139da4 . b4365b74b Auto-commit for release 3.0.3_pre 410a7eaad . 52cdaf7ff . e09678a3d Start work on 3.0.3. e15278726 Final release 3.0.2 927fee511 . 798007eaa . a7eebc5c4 . a27910604 . 032128ac2 . ac7980fc6 Start work on 3.0.2. 99a27d921 . ed6984ca2 . 51295de3e . 7c81d801c . d822b418f . bcdbaeb61 . 2798b9ea7 . a5465c18a . 8ad66d28d Final release 3.0.1 0a7c58232 . d67062b57 . b86e97ba5 . 0a346c624 _cimg_math_parser: Fix 'da_remove()' when used with multi-channel arrays. 6300c47a1 . 4cd0579d4 math_parser : Add functions 'printc()' and 'printcs()'. 0bda75c10 Fix #337. d3190b26f . c5b1a4ce0 Simplify _cimg_math_parser() by merging listin and listout into imglist variable. db7586fb4 . de80b8a82 . 93e45d310 [math-core-301] Fix floating point exception when functions da_*() are used with no images on the list. d4cc50b95 . f88c9148f . ba89271ed Final release 3.0.0 e6ef1ad73 . f687c4629 . 30991fb16 . 26e166b8d . c0995a47f . 3f4dc79a2 . 4d331435d . 64952efb9 . dbc19c290 . 9adb5bdb0 . f72d88d63 . 4d8ee52e6 . 73fef7018 . 175a53870 . e6cfba22a . 87bd9d126 . 10abd5fac . 00e896a07 . 1cffd322a . e2e9baab6 . b05d14e3e Add more boundary conditions to 'boxfilter'. c39bb2503 . aebc12a82 . fa5f067e0 . 63312e7d8 . a93108d4e Fix bug in 'correlate()'. e1e77b7c6 . 62bc6b134 math_parser, function merge(): check that specified variable is not a linked reference. 132bb175b . e0fd8a9b4 . 637eb4c2c . 237a1f4b8 . 481df9dbe . 8d502a5fe . 2ee5b1670 . 63a4fa78d . 5c4860ef3 math_parser: Add functions 'da_back()' and 'da_pop()'. 50c0d9839 math_parser: Add functions 'da_back()' and 'da_pop()'. 67f8c6e4b . 2d2c7f953 . bb98b67b7 . 6acf1c19e . c60635e01 . d6c50bfee . 9798f569d . 5f63bc3d8 . b2f29613e . f30babb43 . 920965b0d . 8e01f2833 . 93408dc74 . 6faf752ff . 5a1a2bd92 . bbecd96f2 . af9c0a434 . 035125b20 Fix CImg<T>::draw_triangle(), with color-interpolated triangles (Fix #332). 8f949732d . 22190d30e . bc0160d79 . c2022354d . 72378e8e3 . 04638b8cd . 527aa2233 . a6d4956bc . f09c2b145 . c967157af . bedf7d5ea . de0612004 . 62d3898a9 . 254d842ee . c0a74ff77 . 5c13300f3 . 2352831c1 . 6e5a14a23 . e020fdf47 . 60bf6e4ec . 4e9f06083 . a95a0dcdb . bd37c5755 . ba155fd42 . 1a6e02309 . f1ba20b82 . 04b3f1e29 . c9eabd65d . 7089938f6 . 47d3a2ea6 . bcf797fea . 04e037028 . 79ea94dd4 . 7bdd3f9ba . fbd0be3a1 . b4f703517 Start the work for supporting new type 'list' in math parser. f6860f51b Merge pull request #329 from Irgy0/master 41f0d3777 . 8eaf50b64 . 2b7e44e57 . 535924dca Set PNG interlacing on to avoid an error message when reading interlaced pngs. df4e034f8 . 6c051eb27 Improve detection of .raw files (CR2,NEF,DNG,ARW). 25aaf3850 . 48173196c Fix a few int-overflow bug that could happen in draw_line(). bcfe7c7b2 Start work on v.3.0.0. Fix bug in CImg<T>::draw_polygon() when large integers are used. cd95217c0 Final release 2.9.9 506fcb51b . b33dcc8f9 . 96114de6d . 25612a629 . 4ffd314d9 . 4314d6e25 . 90dba23bc . 06dc60988 . e3e62d883 Add a few optimized pattern detected to evaluate simple math expressions. c4a7e078a . 595c34a29 . 288e6b8d5 . c82328019 Optimize CImg<T>::_correlate(). 2d83233c4 Merge pull request #322 from xen0n/fix-f1996f1 70876dde3 . 3544285d1 Auto-commit for release 2.9.9_pre 5304630b6 . eb50adb88 Bump to development version 2.99 2d2731eb6 examples: probe for -mtune=generic support, fix wrong LoongArch support 2e01be63d . c89f21f73 . 2a1fc8892 . 1258803c0 . 06e7b4c50 . 69f88f3d3 . 634ec5cb7 . 9f8bcec92 . 6a80064f7 . c62788122 . a6d3453ca . e0ba6764e . b2b2587f6 . 82030f386 . 60c8331bc . 92933de51 . a021efcde . def3d2053 . c498c1d4a . bc62b89bb . 8485f6964 . 3778d6470 . 6642c07af . dbe72a293 . 48885df73 . ac0890316 . a1a0296e8 . d7fa86a15 . 62d4b793d . a154473a4 . 72d6622d2 . 4951ce53a . 4df351bda . 8488374fa . 6c5d95e91 . bd5ad98b0 . 4baff4a38 . 011cf98e9 . 46f09676f . f9fc7ec05 . 64214b216 . 2c6199e6c Optimize CImg<T>::_correlate(). 1ae6b689a . 6c7dab3a6 . 463a7a9e9 . 7ab29098f . 128d06351 . 0fb83de04 . 2f91d0522 . 64ae3ee54 . 025e85ea5 . c7ed44f42 . 91ef37e53 . f92c0ead4 . 29066e1b0 . 00c8c6ba7 . 5a408e8cc . 87226897c . 44b78c7fb . 0bfb8739b Merge pull request #321 from Lucky-Na/master f1996f10f delete -mtune option on loongarch architecture 3d72e8721 Fix variable prepending operator '..=' 499719e16 . 30a5cd2a0 . 43a6228be . 6dabed31d . 4fca316ed correlate() : Fix when used with 3x3,5x5 or 3x3x3 kernels and dirichlet boundary conditions. c72acfb3a cimg_math_parser() : Allow strings with blank characters to define empty 'begin[_t]()' and 'end[_t]()' blocs. 9423744d5 . 59ffa01f5 . b1816a335 . e29daa5b6 cimg_math_parser(): Fix argument counting in functions convolve()/correlate(). b9d347240 . 43af18673 . a79cada5f . 0275b3d84 . 2b0af18cf . bf67c30d8 . 6ca2fdcde . e38d56a2f . b14e79f6e Fix CImg<T>::convolve() and correlate() for channel_mode==0. a996c28cf Fix CImg<T>::convolve() and correlate() for channel_mode==0. 63d40db5e CImg<T>::convolve()/correlate() : Fix bug with small kernels and channel_mode==2. 8b2e46ca5 . d9e5e9551 _cimg_math_parser() : better manage inclusion of begin(), begin_t(), end() and end_t() blocs. 46f043f34 _cimg_math_parser() : allow begin(), begin_t(), end() and end_t() to have empty arguments, and fix possible bug with returned value when multiple end() separated by semicolons. 6fb8ca212 . 59464c694 _cimg_math_parsers(): Fix thread number when math expression is evaluated in parallel. f8cc94faa . 7c414c67b . 7232ea760 . 9aaf75076 CImg<T>::cimg_math_parser() : Add predefined variable T (max number of threads). ee59a3f87 . f5ff164b6 Add commands 'deg2rad' and 'rad2deg'. 28b0562b6 Add 'erf' function. f7308afab . d984ca0ea . 96eab6c69 Auto-commit for release 2.9.8_pre ae16ae5ef . be4612f61 . 87e8f38b7 cimg_math_parser : Add postfix operator '°' for degree to radian conversion. 6351adce1 . a68b594bd CImg<T>::_cimg_math_parser() : Add functions 'deg2rad()' and 'rad2deg()'. a95d03e8b . a285f0fca cimg_math_parser: Add function 'erfinv()' (Inverse of the gaussian error function). 948cc956c cimg_math_parser: Add function 'errf' (Gaussian error function). 340d0a4c8 . 55e370660 Fix #319 c00abf5f0 Command 'input' : when loading a tiff file, bit depth is now set to status. 7222933de Change 'bits_per_pixel' to 'bits_per_value' in CImg<T>::load_png(). 16979f3b3 . 5876d4f7d . 0d9a3c56c . 33a28fddf Temporary disable openmp clauses that slow down execution of CImg<T>::draw_text(). efa524d6d . b726708e6 Implementation of the operator$() in math parser. 5f4914222 Start support of '$varname' expressions in math parser. ad7ea9ef1 Improve comments. 0d1e92f3f factorizes the use of 'is_varname()' in 'cimg_math_parser'. 3039446df . 2c5628639 Make function echo() of the math parser accepts no arguments. 0fa6b92a5 . 5f15b8c60 . 37559271f . d079374d8 . d7bd9f018 . e68a184eb . 749bc70ab . f4b53f6e5 . cc3c1f1da . 14c95cc60 . 075a7225b . dd8888fe6 Auto-commit for release 2.9.8_pre b0f47208f . 68e98b6bf . 68dbb754b . 1a2ff4ed5 . 6c5f78646 . 1d51d0113 . aa0eaa35c . f6bf39296 . 771fed51f . ae07e9402 . c2ea55532 Simplify memtype values to avoid optimizations in mathparser. b0bf3f942 Merge branch 'master' of github.com:dtschump/CImg 218efcf9b . 670c4b96b . 91c79ddbe . b2364dfe6 . 70aaa01e7 . 2970997fc . 4d07ae7cc . 7c15e7916 . 8e381d9ef . 5bcba71c9 . fde76337e . 7886267e6 . 979de2c2a . f7d659758 . 30761a532 . bb00749e6 . 317e5ac5c . 38b70c3cf . 009203b1f . 3ad6a9ae5 . 0794bbb21 . 03781c95a Fix bug in 'draw_text()' when background color provided. 09b9509ae . b7cd009a5 . 65c6ddc16 . 29ab0faff . db81f5dd3 . 3645f4fe1 . 8bdba276f . f4138047f . 30f6b4b06 . 306e56fe6 . 9a1ba9432 . 515bd31a1 . 6ca343326 . 766163fb8 . 9a95c0580 Try to fix warning in _load_cimg(). c9ad21c03 . a5a6d8145 . 11b76c6be . acc89aa12 . 50830d050 . 79c98a562 . 4a7bb5179 . c4b3fa7de . 227ac1511 . 96918daa6 . 32b165ef3 . a66d1967a . 0b499d9ad Auto-commit for release 2.9.8_pre f1f7eb052 . 0f67297eb . a70a9fe8a Final release 2.9.7 f96abe1f9 . bbc902b73 . 9aafe8661 . 6e2fe28f8 . 84999fc90 . 50010156f . 070ded77c . b6b16a833 . 19cfa4a58 . df9386eb1 . 6d2e1b033 . 54362bece . 6b6563f80 . 3aea1583d . 72aebaf5a Merge pull request #307 from lrusak/heic 94427018a . 9546e99a6 . bd5588194 add heic and avif support via libheif 089aeaa1f . 54eb48990 . 1b0e54e4e . 7109b5f09 . e8aed2a42 . 8174e8777 . 338f4b6c4 . 1838aef33 . e48345ab6 . f30d034a9 . e15eac073 . b2129184e . d9ef878a2 . 5f4047615 . d3eb0c5eb . 2f7a1ebf1 . 90baf1b6b . e5084c208 . 391a440af . 70a4532a3 . eca1daace . 9efa52eb7 . 0cdc54bcf . a79a2f1c3 . de1205f66 . 063d9e09a . ec3f66877 . 324c7d1cc . 1244801b1 . 58196cec7 . 2363d1935 . ccc362050 . 5c98c31b0 . c6be2b83a . 8f79526f0 . 1ef7c78d7 . f913ffa5e . 7db6d0835 Merge pull request #295 from cleeus/fix-pnm-heap-overflows 4f184f89f Fix multiple heap buffer overflows 580d74777 . 755cf717a . ce329c07f . 33824c014 . 9978daaaf . f37b255ca . 1222eea73 . b8a7af571 Merge pull request #282 from Chuvi-w/FIX_VTK 96e5c9e14 Fix syntax error in vtk.h ea2b86fef . 833b1a589 . 654d46278 . 15d25b190 . d6955b5e9 . 3f2b7a3a7 . 612044515 . 6f3cacdc3 . 94f6b51e5 . e0763f2fd . 8f0dcc789 . d069d8048 . d501aa3a0 . 9bcfc5b8c . 3a6cd9df0 . 46def454c Merge pull request #263 from UlysseV/MC_improvement 16f2496b6 change func call pattern for isoline3D d577a6b28 change func call pattern f71695057 . fffee0ae0 . c15123bff . d0257a2f9 . 01edd73e1 . bb02b35ea . 92b407d53 . b26716f3b Merge branch 'master' of github.com:dtschump/CImg bc2446460 . a93c51b98 . ecc8b7337 . c3960f08f . f77588f32 Merge pull request #253 from dtschump/develop git-subtree-dir: external/CImg git-subtree-split: 4d061dcd67c08e9a36a01875e78b53ee86501dd7
2023-01-06 10:47:13 +00:00
if (selected_board) {
cimg_forXY(selected_board,x,y) if (selected_board(x,y))
img.draw_image(x<<5,y<<5,balls[selected_board(x,y)],mask);
} else cimg_forXY(board,x,y) if (board(x,y)) img.draw_image(x<<5,y<<5,balls[board(x,y)],mask);
Squashed 'external/CImg/' changes from c0becdf88..4d061dcd6 4d061dcd6 math_parser(): Add function 'map()'. ac599e123 . b9fa7354f . 673cfe3d5 math_parser(): add mutex to protect access to image list statistics. 862b2c7b1 Fix bug in math evaluator function 'find()', and improve 'colormap' in 'full-colormap' mode. 44b1d556c draw_text(): Fix (non-standard) passing reference to va_start() macro. 6db20df4f . 03b2203ea . f9619587b math_parser::da_remove(): Improve error message when trying to remove element in empty dynamic array. 3486b3ee7 Remove unused version of _sprintf(). 07040bb0e Fix warning about using 'vsprintf()' with clang-12. 5f667e2c7 . e6c7b23c9 . 099447df4 . e89b77dfa . 1d5505416 . 163cf1caa . 40a666909 . 86e55504c . 381ba0bfa . b886800ad . 31648450a . 2e82b7cd9 . 2daf2862f . c6e4360df . 6c94a6b20 . d212c0ce3 . 5ff6f38d5 . 3e7a4f21d . ccf1db65e . a411cc180 . e0018918b . 23903475c . 6a8b81169 Command 'text': Custom font can be specified. a2dea0866 . d31902272 Fix bug in 3D convolution operator. 210b728a3 math_parser(): add new predefined variable 'v' (eq. to 'u(-1,-1)'). b030ea4e6 math_parser() : Fix parsing arguments for function 'permut()'. f90e52c4d math_parser: Allow 'norm()' to return a const value when possible. 17b8f5bb5 . 6ffe10e13 . 3c7b877b3 Improve inner/outer parallelization decision in 'correlate/convolve' methods. 56e2268b4 . f4eeec4d2 . 00ce10760 . bf0f5dcb2 . 45df40a35 . 43950e631 . a73a2f129 . 1d033f1da math_parser: Start implementation of function 'offset()'. 0f673c279 . 59a34f2fe . 815c40021 . 422d6ecc3 . b0ab9037b . e2af0d091 . b41f7850e . aebccaad9 . 9d60f335e . c65104e8c . 9ac2b7ae1 . 43558edca . 6cd4e15e6 . fc2ca5606 . aa5b1149b math_parser: Refactor function 'draw()', and prepare for variant that draws in vector-valued variables. 6c47625f3 . 8d1bbe3ef . d5fcd765c . 6c43cf325 . 0d54f89e7 . 56cc9a806 . 60411ef05 . 009594d2d . acf1a2a70 . 8d3bfe7fc . 7078e25a5 . 3d56cac0c . ea0074152 . 4977f9500 math_parser: Prepare code for implementing 'crop()' on vector-valued variables. 382ad1b59 . 8834a487e cimg_math_parser(): Be more strict in the use of vector-valued arguments for some functions. c33802810 . 4b3653922 Remove useless test with 'is_relative' for math_parser's function. 732986f3e . 94f12f994 Allow creation of animated .gif with transparent backgrounds. f3a5ba719 . 866b6d752 . f2dc3ef7b Fix issue #368. 55ff59944 . 386fd1871 . a456e9010 . 28a857b69 . 110ca2d87 . 404303418 . 2e2e0c5e8 . bf7b13196 . 91b63f722 . be47c0a33 . 7d232bdbf . e6012687d Merge pull request #367 from GreycLab/master 642cebcfd . f650e941d . 50a4ab03f . cdedc97f8 . 9ec047a1b . 65c462cab . 2eb56a718 Merge pull request #366 from marsh0/develop a8939b6ef . 334b3e9c1 Fixed unsigned int 64 to unsigned int warning 8e72d80fd . e3cc84697 . b1c13dfc5 . fb79a9d3e Improve computation of matrix pseudoinverse with LU solver. 76fae2fcd Add option 'use_LU' to command 'solve' and math function 'solve()'. bb03df435 . d86916333 Merge commands and math functions 'invert' and 'pseudoinvert'. 49f61eb8a Merge commands and math functions 'invert' and 'pseudoinvert'. a63492bcd Merge commands and math functions 'invert' and 'pseudoinvert'. a403c817e Add 'lambda' option to the various 'pseudoinvert()' functions. ca21c1d73 . e0a825b1a . 931b498a5 . 9112b4711 . f52871859 . 31dabfb13 Start work on next version 3.2.0. 1e1078317 . 7f3157a04 . 03f877161 _cimg_math_parser(): Slightly change behavior of 'isin()' to allow testing vectors. c63cf71c7 . 1921b379a . ec000cd2e cimg_math_parser(): Fix bug in accessing predefined variables 'i0,...i9'. c3cef822b Merge branch 'master' of github.com:GreycLab/CImg a28648518 . 9a0f19ded cimg_math_parser(): Fix incorrect handling of 'yM' (regression). bbad387b3 Merge pull request #359 from bkmgit/ci c5dcd933e Add badge with build status b3059fa96 Update branch name bd0eff91d Merge branch 'master' of github.com:GreycLab/CImg c6f53e867 _cimg_math_parser(): New predefined variable 'id' (std of current image). 7d5619934 Merge pull request #358 from bkmgit/ci db2e449fd Add 3 new postcards. 21c168170 Fix wrong detection of multi-threaded expression error in 'CImg<T>::fill()'. ecfc076a5 Update MacOS dependencies 67ce48f35 Update MacOS dependencies 9c14a9000 Update MacOS dependencies 4184a25ba Update dependencies 813ed36bc Update dependencies 94b62e7fb More formatting fixes ab395bb38 Formatting fixes 052e71ba7 Enable testing 3405584e2 . 5ad3d1af1 Add math parser function 'da_freeze'. f53b5ab9c . 957ecc309 . 5934122c9 Add postcard #77. cb93f21c1 Add postcard #77. 2835ec2e2 . 27ffac840 . f68f333dd . f25f7e1e8 . 80e582a0c . 406fbd072 Merge pull request #355 from Poohl/develop a580234ef font size doc ae654a628 Final release 3.1.4 e35d78341 Auto-commit for release 3.1.4_pre 54ff2d7af . 25bd0c3c6 . 3bb6458fc Simplify error handling in 'get()'. 39b4f963a . 568b34c4a Make 'swap()' return 'nan'. 0cdfb6714 Make 'set()' return 'nan'. 69a03bf83 Make 'copy()' return 'nan'. da854d5ae Invert argument order in math function 'store()'. 8f493f7cd Invert argument order in math function 'set()'. 6f1ea6eab . e82ed2c61 . f511bb5c8 . a35cb93e7 . a452d475c . 2bc84810b . ab4381619 Merge pull request #353 from amyspark/amyspark/support-msvc aa4455fe4 Support MSVC's OpenMP 2.0 5f26c8745 . 6f8ee7c07 . a01439210 Change variable name '_res' to '_resu' to avoid conflict with other badly written libraries. 480b2f0fb Add command 'eye'. 921772323 Start work on 3.1.3 version. 21ba6b4db . 8637d8f4d Define 'cimg_max_buf_size' to another value for 32-bits architectures. d8bb494d6 Define 'cimg_max_buf_size' to another value for 32-bits architectures. e8affb299 . 47e249d38 Fix bug with 'break'. 8fe779e8a Final release 3.1.1 e01419fc5 . 52b3d735a . c4ddd6131 Update plug-in 'cvMat.h'. 104cfb8a6 Start 3.1.1: Fix possible misinterpretation of arithmetic expression in ':=' assignment. 1d1c75c36 . bc010ab25 . d27c30fe1 . 254a4cf7b . 5801be3d2 Merge pull request #348 from 7unn3l/master 37cf0c1e5 add global hardening against RAM exhaustions in safe_size 6b78c3b3f . 7b7688dc8 . c3c8c22d6 . 471083bbd . efd8d2965 . 577bf7b50 . 9d03892e3 . f8dba12b8 . 3ca5dcea2 . 29bdc1dce . a63b71bf0 . 22f226f4c . 761d5c085 . 1665172bb . c7ee7bc9b . 193abd7b2 Add macro 'cimg_max_file_size' to control maximum allowed file size when reading image files. 0f7f7fb45 . 619cb58dd CImg<>::load_bmp() and CImg<>::load_pandore(): Check that dimensions encoded in file does not exceed file size. d0f152d53 Fix offset issue when dealing with large images in 'CImg<T>::erode()' and 'CImg<T>::dilate()'. 607aea7c8 Fix 'get()' in math parser. 8824c078d . 0da4cb0ac . d9a56919a . 52bc43848 . a02df736a Allow command 'store' to manage bigger images. 0cf328ab6 . d54761b9b . 72e5e6314 Remove unused variables in 'CImg<T>::opening()' and 'CImg<T>::closing()' 466022095 Format code to 120 max char./line. 790710040 Merge pull request #340 from amyspark/amyspark/powershell 712078d3f load_network: add Powershell fallback for Windows e7eb920b7 . fc6ba0eec Add 'CImg<T>::otsu()'. 8404b81a0 . 877ba9da8 CImg<T>::opening() and CImg<T>::closing(): Use min/max of type T rather than min/max of image values, for initialization. 3cd82ea4f Add methods 'CImg<T>::opening()' and 'CImg<T>::get_opening()' 640195d02 Add methods 'CImg<T>::closing()' and 'CImg<T>::get_closing()' 94a7c7f13 . 4171fb912 . b5f2177c5 . 3200701db . fddf9334f . 555019468 . 353cd8fbe . c864cb0ac . 97c2923c0 . 366977648 . 66261e676 . baf9a8009 . a87a42217 . 2e99e630c . 23c738e85 . 8a17cb81a . 8b23cf36b . 1190e3f98 . ae4c10e71 . b6febab4c . 891d91621 Fix libtiff compilation issues with uint16_t and uint32 datatypes. ee4dc2f93 . 1189d5050 . 0a260f407 . 983c502b4 . 376ac7316 . d51bccfce . 82d6b436d . 3b7421231 Update README.md d7ea859fc . 4efbe8a4f . fb39f7c96 . abbcd69f2 . 5651a141f . 6816343ca . 96661b16f . 159baf24f Improve default image normalization behavior with CImgDisplay with integer types. 349274537 . 53cf0df32 Fix multithreading in 'structuretensors()' computation. 1bff57ea5 . 44df5b111 Fix compilation errors for type T=half. dd1139da4 . b4365b74b Auto-commit for release 3.0.3_pre 410a7eaad . 52cdaf7ff . e09678a3d Start work on 3.0.3. e15278726 Final release 3.0.2 927fee511 . 798007eaa . a7eebc5c4 . a27910604 . 032128ac2 . ac7980fc6 Start work on 3.0.2. 99a27d921 . ed6984ca2 . 51295de3e . 7c81d801c . d822b418f . bcdbaeb61 . 2798b9ea7 . a5465c18a . 8ad66d28d Final release 3.0.1 0a7c58232 . d67062b57 . b86e97ba5 . 0a346c624 _cimg_math_parser: Fix 'da_remove()' when used with multi-channel arrays. 6300c47a1 . 4cd0579d4 math_parser : Add functions 'printc()' and 'printcs()'. 0bda75c10 Fix #337. d3190b26f . c5b1a4ce0 Simplify _cimg_math_parser() by merging listin and listout into imglist variable. db7586fb4 . de80b8a82 . 93e45d310 [math-core-301] Fix floating point exception when functions da_*() are used with no images on the list. d4cc50b95 . f88c9148f . ba89271ed Final release 3.0.0 e6ef1ad73 . f687c4629 . 30991fb16 . 26e166b8d . c0995a47f . 3f4dc79a2 . 4d331435d . 64952efb9 . dbc19c290 . 9adb5bdb0 . f72d88d63 . 4d8ee52e6 . 73fef7018 . 175a53870 . e6cfba22a . 87bd9d126 . 10abd5fac . 00e896a07 . 1cffd322a . e2e9baab6 . b05d14e3e Add more boundary conditions to 'boxfilter'. c39bb2503 . aebc12a82 . fa5f067e0 . 63312e7d8 . a93108d4e Fix bug in 'correlate()'. e1e77b7c6 . 62bc6b134 math_parser, function merge(): check that specified variable is not a linked reference. 132bb175b . e0fd8a9b4 . 637eb4c2c . 237a1f4b8 . 481df9dbe . 8d502a5fe . 2ee5b1670 . 63a4fa78d . 5c4860ef3 math_parser: Add functions 'da_back()' and 'da_pop()'. 50c0d9839 math_parser: Add functions 'da_back()' and 'da_pop()'. 67f8c6e4b . 2d2c7f953 . bb98b67b7 . 6acf1c19e . c60635e01 . d6c50bfee . 9798f569d . 5f63bc3d8 . b2f29613e . f30babb43 . 920965b0d . 8e01f2833 . 93408dc74 . 6faf752ff . 5a1a2bd92 . bbecd96f2 . af9c0a434 . 035125b20 Fix CImg<T>::draw_triangle(), with color-interpolated triangles (Fix #332). 8f949732d . 22190d30e . bc0160d79 . c2022354d . 72378e8e3 . 04638b8cd . 527aa2233 . a6d4956bc . f09c2b145 . c967157af . bedf7d5ea . de0612004 . 62d3898a9 . 254d842ee . c0a74ff77 . 5c13300f3 . 2352831c1 . 6e5a14a23 . e020fdf47 . 60bf6e4ec . 4e9f06083 . a95a0dcdb . bd37c5755 . ba155fd42 . 1a6e02309 . f1ba20b82 . 04b3f1e29 . c9eabd65d . 7089938f6 . 47d3a2ea6 . bcf797fea . 04e037028 . 79ea94dd4 . 7bdd3f9ba . fbd0be3a1 . b4f703517 Start the work for supporting new type 'list' in math parser. f6860f51b Merge pull request #329 from Irgy0/master 41f0d3777 . 8eaf50b64 . 2b7e44e57 . 535924dca Set PNG interlacing on to avoid an error message when reading interlaced pngs. df4e034f8 . 6c051eb27 Improve detection of .raw files (CR2,NEF,DNG,ARW). 25aaf3850 . 48173196c Fix a few int-overflow bug that could happen in draw_line(). bcfe7c7b2 Start work on v.3.0.0. Fix bug in CImg<T>::draw_polygon() when large integers are used. cd95217c0 Final release 2.9.9 506fcb51b . b33dcc8f9 . 96114de6d . 25612a629 . 4ffd314d9 . 4314d6e25 . 90dba23bc . 06dc60988 . e3e62d883 Add a few optimized pattern detected to evaluate simple math expressions. c4a7e078a . 595c34a29 . 288e6b8d5 . c82328019 Optimize CImg<T>::_correlate(). 2d83233c4 Merge pull request #322 from xen0n/fix-f1996f1 70876dde3 . 3544285d1 Auto-commit for release 2.9.9_pre 5304630b6 . eb50adb88 Bump to development version 2.99 2d2731eb6 examples: probe for -mtune=generic support, fix wrong LoongArch support 2e01be63d . c89f21f73 . 2a1fc8892 . 1258803c0 . 06e7b4c50 . 69f88f3d3 . 634ec5cb7 . 9f8bcec92 . 6a80064f7 . c62788122 . a6d3453ca . e0ba6764e . b2b2587f6 . 82030f386 . 60c8331bc . 92933de51 . a021efcde . def3d2053 . c498c1d4a . bc62b89bb . 8485f6964 . 3778d6470 . 6642c07af . dbe72a293 . 48885df73 . ac0890316 . a1a0296e8 . d7fa86a15 . 62d4b793d . a154473a4 . 72d6622d2 . 4951ce53a . 4df351bda . 8488374fa . 6c5d95e91 . bd5ad98b0 . 4baff4a38 . 011cf98e9 . 46f09676f . f9fc7ec05 . 64214b216 . 2c6199e6c Optimize CImg<T>::_correlate(). 1ae6b689a . 6c7dab3a6 . 463a7a9e9 . 7ab29098f . 128d06351 . 0fb83de04 . 2f91d0522 . 64ae3ee54 . 025e85ea5 . c7ed44f42 . 91ef37e53 . f92c0ead4 . 29066e1b0 . 00c8c6ba7 . 5a408e8cc . 87226897c . 44b78c7fb . 0bfb8739b Merge pull request #321 from Lucky-Na/master f1996f10f delete -mtune option on loongarch architecture 3d72e8721 Fix variable prepending operator '..=' 499719e16 . 30a5cd2a0 . 43a6228be . 6dabed31d . 4fca316ed correlate() : Fix when used with 3x3,5x5 or 3x3x3 kernels and dirichlet boundary conditions. c72acfb3a cimg_math_parser() : Allow strings with blank characters to define empty 'begin[_t]()' and 'end[_t]()' blocs. 9423744d5 . 59ffa01f5 . b1816a335 . e29daa5b6 cimg_math_parser(): Fix argument counting in functions convolve()/correlate(). b9d347240 . 43af18673 . a79cada5f . 0275b3d84 . 2b0af18cf . bf67c30d8 . 6ca2fdcde . e38d56a2f . b14e79f6e Fix CImg<T>::convolve() and correlate() for channel_mode==0. a996c28cf Fix CImg<T>::convolve() and correlate() for channel_mode==0. 63d40db5e CImg<T>::convolve()/correlate() : Fix bug with small kernels and channel_mode==2. 8b2e46ca5 . d9e5e9551 _cimg_math_parser() : better manage inclusion of begin(), begin_t(), end() and end_t() blocs. 46f043f34 _cimg_math_parser() : allow begin(), begin_t(), end() and end_t() to have empty arguments, and fix possible bug with returned value when multiple end() separated by semicolons. 6fb8ca212 . 59464c694 _cimg_math_parsers(): Fix thread number when math expression is evaluated in parallel. f8cc94faa . 7c414c67b . 7232ea760 . 9aaf75076 CImg<T>::cimg_math_parser() : Add predefined variable T (max number of threads). ee59a3f87 . f5ff164b6 Add commands 'deg2rad' and 'rad2deg'. 28b0562b6 Add 'erf' function. f7308afab . d984ca0ea . 96eab6c69 Auto-commit for release 2.9.8_pre ae16ae5ef . be4612f61 . 87e8f38b7 cimg_math_parser : Add postfix operator '°' for degree to radian conversion. 6351adce1 . a68b594bd CImg<T>::_cimg_math_parser() : Add functions 'deg2rad()' and 'rad2deg()'. a95d03e8b . a285f0fca cimg_math_parser: Add function 'erfinv()' (Inverse of the gaussian error function). 948cc956c cimg_math_parser: Add function 'errf' (Gaussian error function). 340d0a4c8 . 55e370660 Fix #319 c00abf5f0 Command 'input' : when loading a tiff file, bit depth is now set to status. 7222933de Change 'bits_per_pixel' to 'bits_per_value' in CImg<T>::load_png(). 16979f3b3 . 5876d4f7d . 0d9a3c56c . 33a28fddf Temporary disable openmp clauses that slow down execution of CImg<T>::draw_text(). efa524d6d . b726708e6 Implementation of the operator$() in math parser. 5f4914222 Start support of '$varname' expressions in math parser. ad7ea9ef1 Improve comments. 0d1e92f3f factorizes the use of 'is_varname()' in 'cimg_math_parser'. 3039446df . 2c5628639 Make function echo() of the math parser accepts no arguments. 0fa6b92a5 . 5f15b8c60 . 37559271f . d079374d8 . d7bd9f018 . e68a184eb . 749bc70ab . f4b53f6e5 . cc3c1f1da . 14c95cc60 . 075a7225b . dd8888fe6 Auto-commit for release 2.9.8_pre b0f47208f . 68e98b6bf . 68dbb754b . 1a2ff4ed5 . 6c5f78646 . 1d51d0113 . aa0eaa35c . f6bf39296 . 771fed51f . ae07e9402 . c2ea55532 Simplify memtype values to avoid optimizations in mathparser. b0bf3f942 Merge branch 'master' of github.com:dtschump/CImg 218efcf9b . 670c4b96b . 91c79ddbe . b2364dfe6 . 70aaa01e7 . 2970997fc . 4d07ae7cc . 7c15e7916 . 8e381d9ef . 5bcba71c9 . fde76337e . 7886267e6 . 979de2c2a . f7d659758 . 30761a532 . bb00749e6 . 317e5ac5c . 38b70c3cf . 009203b1f . 3ad6a9ae5 . 0794bbb21 . 03781c95a Fix bug in 'draw_text()' when background color provided. 09b9509ae . b7cd009a5 . 65c6ddc16 . 29ab0faff . db81f5dd3 . 3645f4fe1 . 8bdba276f . f4138047f . 30f6b4b06 . 306e56fe6 . 9a1ba9432 . 515bd31a1 . 6ca343326 . 766163fb8 . 9a95c0580 Try to fix warning in _load_cimg(). c9ad21c03 . a5a6d8145 . 11b76c6be . acc89aa12 . 50830d050 . 79c98a562 . 4a7bb5179 . c4b3fa7de . 227ac1511 . 96918daa6 . 32b165ef3 . a66d1967a . 0b499d9ad Auto-commit for release 2.9.8_pre f1f7eb052 . 0f67297eb . a70a9fe8a Final release 2.9.7 f96abe1f9 . bbc902b73 . 9aafe8661 . 6e2fe28f8 . 84999fc90 . 50010156f . 070ded77c . b6b16a833 . 19cfa4a58 . df9386eb1 . 6d2e1b033 . 54362bece . 6b6563f80 . 3aea1583d . 72aebaf5a Merge pull request #307 from lrusak/heic 94427018a . 9546e99a6 . bd5588194 add heic and avif support via libheif 089aeaa1f . 54eb48990 . 1b0e54e4e . 7109b5f09 . e8aed2a42 . 8174e8777 . 338f4b6c4 . 1838aef33 . e48345ab6 . f30d034a9 . e15eac073 . b2129184e . d9ef878a2 . 5f4047615 . d3eb0c5eb . 2f7a1ebf1 . 90baf1b6b . e5084c208 . 391a440af . 70a4532a3 . eca1daace . 9efa52eb7 . 0cdc54bcf . a79a2f1c3 . de1205f66 . 063d9e09a . ec3f66877 . 324c7d1cc . 1244801b1 . 58196cec7 . 2363d1935 . ccc362050 . 5c98c31b0 . c6be2b83a . 8f79526f0 . 1ef7c78d7 . f913ffa5e . 7db6d0835 Merge pull request #295 from cleeus/fix-pnm-heap-overflows 4f184f89f Fix multiple heap buffer overflows 580d74777 . 755cf717a . ce329c07f . 33824c014 . 9978daaaf . f37b255ca . 1222eea73 . b8a7af571 Merge pull request #282 from Chuvi-w/FIX_VTK 96e5c9e14 Fix syntax error in vtk.h ea2b86fef . 833b1a589 . 654d46278 . 15d25b190 . d6955b5e9 . 3f2b7a3a7 . 612044515 . 6f3cacdc3 . 94f6b51e5 . e0763f2fd . 8f0dcc789 . d069d8048 . d501aa3a0 . 9bcfc5b8c . 3a6cd9df0 . 46def454c Merge pull request #263 from UlysseV/MC_improvement 16f2496b6 change func call pattern for isoline3D d577a6b28 change func call pattern f71695057 . fffee0ae0 . c15123bff . d0257a2f9 . 01edd73e1 . bb02b35ea . 92b407d53 . b26716f3b Merge branch 'master' of github.com:dtschump/CImg bc2446460 . a93c51b98 . ecc8b7337 . c3960f08f . f77588f32 Merge pull request #253 from dtschump/develop git-subtree-dir: external/CImg git-subtree-split: 4d061dcd67c08e9a36a01875e78b53ee86501dd7
2023-01-06 10:47:13 +00:00
if (title) {
CImg<unsigned char> text1, text2;
text1.draw_text(0,0,"- Jawbreaker -",white,0,1,48).resize(-100,-100,1,3);
text2.draw_text(0,0,"Press button to start",yellow,0,1,24).resize(-100,-100,1,3);
(img/=2).draw_image((Wi - text1.width())/2,
(Hi - text1.height())/2,
text1,text1.get_dilate(7),1,255).
draw_image((Wi - text2.width())/2,
(Hi + text1.height() + 10)/2,
text2,text2.get_dilate(5),0.7f,255);
for (float i = 1; i<10 && !disp.is_keyESC(); i+=0.25)
disp.display(img.get_crop((int)(Wi*(0.5f - i*i/200.0f)),(int)(Hi*(0.5f - i*i*i*i/20000.0f)),
(int)(Wi*(0.5f + i*i/200.0f)),(int)(Hi*(0.5f + i*i*i*i/20000.0f)))).wait(20);
}
}
if ((opac-=0.06f)>0) disp.display((+img).draw_text(disp.mouse_x() - 8,disp.mouse_y() - 80 + (int)(60*opac),"+%u",
white,0,(float)std::sqrt(opac),32,shape_score)).wait(20);
else { if (redraw) { disp.display(img); redraw = false; } else disp.wait(); }
// Handle key and window events
if (disp.is_resized()) disp.resize(disp);
if (disp.is_keyBACKSPACE() || disp.is_keySPACE()) {
board = previous_board; score = previous_score; selected_board.assign(); redraw = true; disp.set_key();
}
if (disp.is_keyQ()) { gameover = true; disp.set_key(); }
if (disp.is_keyESC()) disp.close();
if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen().display(img);
// Handle ball selection and removal
const int x = disp.mouse_x()*board.width()/disp.width(), y = disp.mouse_y()*board.height()/disp.height();
if (disp.button()&1 && x>=0 && y>=0) {
if (title) { title = false; redraw = true; } else {
if (!board(x,y)) { selected_board.assign(); redraw = true; }
else {
if (!selected_board || selected_board(x,y)!=6) {
(selected_board=board).draw_fill(x,y,0,&six,1,shape);
if ((shape_score=(unsigned int)shape.sum())<2) selected_board.assign();
else { shape_score-=1; shape_score*=shape_score; opac = 1.0f; redraw = true; }
} else {
selected_board.assign();
previous_board = board;
previous_score = score;
score += shape_score;
board&=--shape;
redraw = true;
// Handle board modification due to ball removal
for (int pmax = board.width(), p = 0; p<pmax; ++p) {
for (int q = board.height() - 1, qs = q; q>=0; --q) {
while (qs>=0 && !board(p,qs)) --qs;
board(p,q) = (qs>=0?board(p,qs--):0);
}
if (!board(p,board.height() - 1)) {
board.draw_image(p,board.get_crop(p,0,board.width() - 1,board.height() - 1).shift(-1));
if (p<pmax) { p--; pmax--; }
}
}
// Test possible end of the game
gameover = true;
cimg_forXY(board,p,q)
if (board(p,q) && ((q && board(p,q)==board(p,q - 1)) || (p && board(p,q)==board(p - 1,q))))
gameover = false;
}
}
}
disp.set_button();
}
// If game is over...
if (gameover && opac<=0) {
CImg<unsigned char> text1, text2, text3, text4, text5, text6;
text1.draw_text(0,0,"Game Over !",white,0,1,48).resize(-100,-100,1,3);
const unsigned int remaining_balls = (unsigned int)board.get_cut(0,1).sum();
if (remaining_balls<8) {
const unsigned int bonus = (22 - 2*remaining_balls)*10;
score += bonus;
text2.draw_text(0,0,"Jawbreaker Bonus : +%u",white,0,1,24,bonus);
}
score_history.insert(CImg<unsigned int>::vector(score));
text3.draw_text(0,0,"Final score : %u",yellow,0,1,24,score).resize(-100,-100,1,3);
text4.draw_text(0,0,score>best_score?"** New record ! **":"Best score : %u",
orange,0,1,24,score>best_score?score:best_score).resize(-100,-100,1,3);
text5.draw_text(0,0,"Average score : %u",red,0,1,24,
score_history?(unsigned int)(score_history>'x').mean():0U).resize(-100,-100,1,3);
text6.draw_text(0,0,"Games played : %u",red,0,1,24,score_history.size()).resize(-100,-100,1,3);
if (score>best_score) best_score = score;
unsigned int yt = (Hi - text1.height())/2 - 20;
(img/=2).draw_image((Wi - text1.width())/2,yt,text1,text1.get_dilate(7),1,255); yt+=80;
if (text2) { img.draw_image((Wi - text2.width())/2,yt,text2,text2.get_dilate(5),1,255); yt+=25; }
img.draw_image((Wi - text3.width())/2,yt,text3,text3.get_dilate(5),1,255).
draw_image((Wi - text4.width())/2,yt + 25,text4,text4.get_dilate(5),1,255).
draw_image((Wi - text5.width())/2,yt + 50,text5,text5.get_dilate(5),1,255).
draw_image((Wi - text6.width())/2,yt + 75,text6,text6.get_dilate(5),1,255).display(disp);
for (disp.flush(); !disp.is_closed() && !disp.key() && !disp.button(); disp.wait())
if (disp.is_resized()) disp.resize(disp);
disp.flush();
board.assign();
for (float i = 10; i>0 && !disp.is_keyESC(); i-=0.25)
disp.display(img.get_crop((int)(Wi*(0.5f - i*i*i*i/20000.0f)),(int)(Hi*(0.5f - i*i/200.0f)),
(int)(Wi*(0.5f + i*i*i*i/20000.0f)),(int)(Hi*(0.5f + i*i/200.0f)))).wait(20);
}
}
// Save score history if possible, and exit.
if (score_history) {
file = std::fopen(filename_history,"w");
if (file) { std::fclose(file); (score_history>'y').save_dlm(filename_history); }
}
return 0;
}