Mercurial > octave
changeset 32647:dfb9b770ae77
Increase default colormap size to 256 colors, add colormap BISTs (bug #65010)
* autumn.m, bone.m, cool.m, copper.m, cubehelix.m, flag.m, gray.m, hot.m,
hsv.m, jet.m, lines.m, ocean.m, prism.m, rainbow.m, spring.m, summer.m,
turbo.m, viridis.m, white.m, winter.m: Change default return size from 64 to
256. Update docstring text about colormap size being either the size of the
current colomap or the default of 256. Add function BISTs for calling forms
and input validation.
* colorcube.m: Update input validation to match other colormaps. Change
default return size from 64 to 256. Update docstring text about colormap
size being either the size of the current colomap or the default of 256.
Add function BISTs for calling forms and input validation.
* colormap.m: Update default colormap size to 256. Add docstring noting new
colormap size and that colormap will create a new figure if one does not
exist. Update BISTs for new size.
* graphics.cc (viridis_colormap): Replace 64 color interpolated viridis map
table with full 256 color map. Increase cmap container size to 256.
* NEWS.10.md: Note increased size of default return from colormap functions.
author | Nicholas R. Jankowski <jankowski.nicholas@gmail.com> |
---|---|
date | Mon, 25 Dec 2023 18:35:50 -0500 |
parents | 60816c9cd277 |
children | 6ec0b7516c5b |
files | etc/NEWS.10.md libinterp/corefcn/graphics.cc scripts/image/autumn.m scripts/image/bone.m scripts/image/colorcube.m scripts/image/colormap.m scripts/image/cool.m scripts/image/copper.m scripts/image/cubehelix.m scripts/image/flag.m scripts/image/gray.m scripts/image/hot.m scripts/image/hsv.m scripts/image/jet.m scripts/image/lines.m scripts/image/ocean.m scripts/image/pink.m scripts/image/prism.m scripts/image/rainbow.m scripts/image/spring.m scripts/image/summer.m scripts/image/turbo.m scripts/image/viridis.m scripts/image/white.m scripts/image/winter.m |
diffstat | 25 files changed, 886 insertions(+), 118 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/NEWS.10.md Sat Dec 23 14:14:26 2023 +0100 +++ b/etc/NEWS.10.md Mon Dec 25 18:35:50 2023 -0500 @@ -16,6 +16,9 @@ - `height` and `width` are now aliases for the `rows` and `columns` functions. +- All colormaps now default to a size of 256 colors. (The previous default +size was 64. + ### Alphabetical list of new functions added in Octave 10 * `rticklabels`
--- a/libinterp/corefcn/graphics.cc Sat Dec 23 14:14:26 2023 +0100 +++ b/libinterp/corefcn/graphics.cc Mon Dec 25 18:35:50 2023 -0500 @@ -147,76 +147,268 @@ const double cmapv[] = { - 2.67004010000000e-01, 2.72651720952381e-01, 2.77106307619048e-01, - 2.80356151428571e-01, 2.82390045238095e-01, 2.83204606666667e-01, - 2.82809341428571e-01, 2.81230763333333e-01, 2.78516153333333e-01, - 2.74735528571429e-01, 2.69981791904762e-01, 2.64368580952381e-01, - 2.58026184285714e-01, 2.51098684761905e-01, 2.43732853333333e-01, - 2.36073294285714e-01, 2.28263191428571e-01, 2.20424955714286e-01, - 2.12666598571429e-01, 2.05079113809524e-01, 1.97721880952381e-01, - 1.90631350000000e-01, 1.83819438571429e-01, 1.77272360952381e-01, - 1.70957518571429e-01, 1.64832915714286e-01, 1.58845368095238e-01, - 1.52951235714286e-01, 1.47131626666667e-01, 1.41402210952381e-01, - 1.35832975714286e-01, 1.30582113809524e-01, 1.25898377619048e-01, - 1.22163105714286e-01, 1.19872409523810e-01, 1.19626570000000e-01, - 1.22045948571429e-01, 1.27667691904762e-01, 1.36834947142857e-01, - 1.49643331428571e-01, 1.65967274285714e-01, 1.85538397142857e-01, - 2.08030450000000e-01, 2.33127309523809e-01, 2.60531475238095e-01, - 2.90000730000000e-01, 3.21329971428571e-01, 3.54355250000000e-01, - 3.88930322857143e-01, 4.24933143333333e-01, 4.62246770476190e-01, - 5.00753620000000e-01, 5.40336957142857e-01, 5.80861172380952e-01, - 6.22170772857143e-01, 6.64087320476191e-01, 7.06403823333333e-01, - 7.48885251428571e-01, 7.91273132857143e-01, 8.33302102380952e-01, - 8.74717527142857e-01, 9.15296319047619e-01, 9.54839555238095e-01, - 9.93247890000000e-01, 4.87433000000000e-03, 2.58456800000000e-02, - 5.09139004761905e-02, 7.42014957142857e-02, 9.59536042857143e-02, - 1.16893314761905e-01, 1.37350195714286e-01, 1.57479940000000e-01, - 1.77347967619048e-01, 1.96969168571429e-01, 2.16330337619048e-01, - 2.35404660952381e-01, 2.54161735714286e-01, 2.72573219047619e-01, - 2.90619516666667e-01, 3.08291041428571e-01, 3.25586450952381e-01, - 3.42517215238095e-01, 3.59102207142857e-01, 3.75366067142857e-01, - 3.91340913333333e-01, 4.07061480000000e-01, 4.22563764285714e-01, - 4.37885543809524e-01, 4.53062984285714e-01, 4.68129543809524e-01, - 4.83117059523810e-01, 4.98052961428571e-01, 5.12959473333333e-01, - 5.27854311428571e-01, 5.42750087142857e-01, 5.57652481904762e-01, - 5.72563073333333e-01, 5.87476284285714e-01, 6.02382410952381e-01, - 6.17265840000000e-01, 6.32106955714286e-01, 6.46881817142857e-01, - 6.61562926190476e-01, 6.76119717142857e-01, 6.90518987142857e-01, - 7.04725181904762e-01, 7.18700950000000e-01, 7.32406441904762e-01, - 7.45802021904762e-01, 7.58846480000000e-01, 7.71497934761905e-01, - 7.83714033809524e-01, 7.95453081428571e-01, 8.06673890000000e-01, - 8.17337565714286e-01, 8.27409135714286e-01, 8.36858167619048e-01, - 8.45663399523809e-01, 8.53815582857143e-01, 8.61321019047619e-01, - 8.68206316666667e-01, 8.74522215714286e-01, 8.80346158571429e-01, - 8.85780083333333e-01, 8.90945338571429e-01, 8.95973498571429e-01, - 9.01005800000000e-01, 9.06156570000000e-01, 3.29415190000000e-01, - 3.53367293333333e-01, 3.76236064761905e-01, 3.97901482857143e-01, - 4.18250757142857e-01, 4.37178920000000e-01, 4.54595888571429e-01, - 4.70433883333333e-01, 4.84653865714286e-01, 4.97250492857143e-01, - 5.08254501428571e-01, 5.17731949047619e-01, 5.25780221428571e-01, - 5.32522206190476e-01, 5.38097133333333e-01, 5.42651800000000e-01, - 5.46335411904762e-01, 5.49287148571429e-01, 5.51635008571429e-01, - 5.53493173333333e-01, 5.54953478571429e-01, 5.56089070000000e-01, - 5.56952166666667e-01, 5.57576145714286e-01, 5.57974025714286e-01, - 5.58142745238095e-01, 5.58058673809524e-01, 5.57684744285714e-01, - 5.56973310000000e-01, 5.55864478571429e-01, 5.54288677142857e-01, - 5.52175699047619e-01, 5.49445382857143e-01, 5.46023368571429e-01, - 5.41830633809524e-01, 5.36795616666667e-01, 5.30847985714286e-01, - 5.23924198571429e-01, 5.15966779523810e-01, 5.06924262857143e-01, - 4.96751861428571e-01, 4.85412122857143e-01, 4.72873300000000e-01, - 4.59105875238095e-01, 4.44095883333333e-01, 4.27825852857143e-01, - 4.10292713809524e-01, 3.91487632857143e-01, 3.71420688571429e-01, - 3.50098750000000e-01, 3.27544678571429e-01, 3.03798967142857e-01, - 2.78916748571429e-01, 2.53000856190476e-01, 2.26223670000000e-01, - 1.98879439523810e-01, 1.71494930000000e-01, 1.45037631428572e-01, - 1.21291048571429e-01, 1.03326155238095e-01, 9.53507900000000e-02, - 1.00469958095238e-01, 1.17876387142857e-01, 1.43936200000000e-01 + 0.26700401, 0.00487433, 0.32941519, + 0.26851048, 0.00960483, 0.33542652, + 0.26994384, 0.01462494, 0.34137895, + 0.27130489, 0.01994186, 0.34726862, + 0.27259384, 0.02556309, 0.35309303, + 0.27380934, 0.03149748, 0.35885256, + 0.27495242, 0.03775181, 0.36454323, + 0.27602238, 0.04416723, 0.37016418, + 0.27701840, 0.05034437, 0.37571452, + 0.27794143, 0.05632444, 0.38119074, + 0.27879067, 0.06214536, 0.38659204, + 0.27956550, 0.06783587, 0.39191723, + 0.28026658, 0.07341724, 0.39716349, + 0.28089358, 0.07890703, 0.40232944, + 0.28144581, 0.08431970, 0.40741404, + 0.28192358, 0.08966622, 0.41241521, + 0.28232739, 0.09495545, 0.41733086, + 0.28265633, 0.10019576, 0.42216032, + 0.28291049, 0.10539345, 0.42690202, + 0.28309095, 0.11055307, 0.43155375, + 0.28319704, 0.11567966, 0.43611482, + 0.28322882, 0.12077701, 0.44058404, + 0.28318684, 0.12584799, 0.44496000, + 0.28307200, 0.13089477, 0.44924127, + 0.28288389, 0.13592005, 0.45342734, + 0.28262297, 0.14092556, 0.45751726, + 0.28229037, 0.14591233, 0.46150995, + 0.28188676, 0.15088147, 0.46540474, + 0.28141228, 0.15583425, 0.46920128, + 0.28086773, 0.16077132, 0.47289909, + 0.28025468, 0.16569272, 0.47649762, + 0.27957399, 0.17059884, 0.47999675, + 0.27882618, 0.17549020, 0.48339654, + 0.27801236, 0.18036684, 0.48669702, + 0.27713437, 0.18522836, 0.48989831, + 0.27619376, 0.19007447, 0.49300074, + 0.27519116, 0.19490540, 0.49600488, + 0.27412802, 0.19972086, 0.49891131, + 0.27300596, 0.20452049, 0.50172076, + 0.27182812, 0.20930306, 0.50443413, + 0.27059473, 0.21406899, 0.50705243, + 0.26930756, 0.21881782, 0.50957678, + 0.26796846, 0.22354911, 0.51200840, + 0.26657984, 0.22826210, 0.51434870, + 0.26514450, 0.23295593, 0.51659930, + 0.26366320, 0.23763078, 0.51876163, + 0.26213801, 0.24228619, 0.52083736, + 0.26057103, 0.24692170, 0.52282822, + 0.25896451, 0.25153685, 0.52473609, + 0.25732244, 0.25613040, 0.52656332, + 0.25564519, 0.26070284, 0.52831152, + 0.25393498, 0.26525384, 0.52998273, + 0.25219404, 0.26978306, 0.53157905, + 0.25042462, 0.27429024, 0.53310261, + 0.24862899, 0.27877509, 0.53455561, + 0.24681140, 0.28323662, 0.53594093, + 0.24497208, 0.28767547, 0.53726018, + 0.24311324, 0.29209154, 0.53851561, + 0.24123708, 0.29648471, 0.53970946, + 0.23934575, 0.30085494, 0.54084398, + 0.23744138, 0.30520222, 0.54192140, + 0.23552606, 0.30952657, 0.54294396, + 0.23360277, 0.31382773, 0.54391424, + 0.23167350, 0.31810580, 0.54483444, + 0.22973926, 0.32236127, 0.54570633, + 0.22780192, 0.32659432, 0.54653200, + 0.22586330, 0.33080515, 0.54731353, + 0.22392515, 0.33499400, 0.54805291, + 0.22198915, 0.33916114, 0.54875211, + 0.22005691, 0.34330688, 0.54941304, + 0.21812995, 0.34743154, 0.55003755, + 0.21620971, 0.35153548, 0.55062743, + 0.21429757, 0.35561907, 0.55118440, + 0.21239477, 0.35968273, 0.55171011, + 0.21050310, 0.36372671, 0.55220646, + 0.20862342, 0.36775151, 0.55267486, + 0.20675628, 0.37175775, 0.55311653, + 0.20490257, 0.37574589, 0.55353282, + 0.20306309, 0.37971644, 0.55392505, + 0.20123854, 0.38366989, 0.55429441, + 0.19942950, 0.38760678, 0.55464205, + 0.19763650, 0.39152762, 0.55496905, + 0.19585993, 0.39543297, 0.55527637, + 0.19410009, 0.39932336, 0.55556494, + 0.19235719, 0.40319934, 0.55583559, + 0.19063135, 0.40706148, 0.55608907, + 0.18892259, 0.41091033, 0.55632606, + 0.18723083, 0.41474645, 0.55654717, + 0.18555593, 0.41857040, 0.55675292, + 0.18389763, 0.42238275, 0.55694377, + 0.18225561, 0.42618405, 0.55712010, + 0.18062949, 0.42997486, 0.55728221, + 0.17901879, 0.43375572, 0.55743035, + 0.17742298, 0.43752720, 0.55756466, + 0.17584148, 0.44128981, 0.55768526, + 0.17427363, 0.44504410, 0.55779216, + 0.17271876, 0.44879060, 0.55788532, + 0.17117615, 0.45252980, 0.55796464, + 0.16964573, 0.45626209, 0.55803034, + 0.16812641, 0.45998802, 0.55808199, + 0.16661710, 0.46370813, 0.55811913, + 0.16511703, 0.46742290, 0.55814141, + 0.16362543, 0.47113278, 0.55814842, + 0.16214155, 0.47483821, 0.55813967, + 0.16066467, 0.47853961, 0.55811466, + 0.15919413, 0.48223740, 0.55807280, + 0.15772933, 0.48593197, 0.55801347, + 0.15626973, 0.48962370, 0.55793600, + 0.15481488, 0.49331293, 0.55783967, + 0.15336445, 0.49700003, 0.55772371, + 0.15191820, 0.50068529, 0.55758733, + 0.15047605, 0.50436904, 0.55742968, + 0.14903918, 0.50805136, 0.55725050, + 0.14760731, 0.51173263, 0.55704861, + 0.14618026, 0.51541316, 0.55682271, + 0.14475863, 0.51909319, 0.55657181, + 0.14334327, 0.52277292, 0.55629491, + 0.14193527, 0.52645254, 0.55599097, + 0.14053599, 0.53013219, 0.55565893, + 0.13914708, 0.53381201, 0.55529773, + 0.13777048, 0.53749213, 0.55490625, + 0.13640850, 0.54117264, 0.55448339, + 0.13506561, 0.54485335, 0.55402906, + 0.13374299, 0.54853458, 0.55354108, + 0.13244401, 0.55221637, 0.55301828, + 0.13117249, 0.55589872, 0.55245948, + 0.12993270, 0.55958162, 0.55186354, + 0.12872938, 0.56326503, 0.55122927, + 0.12756771, 0.56694891, 0.55055551, + 0.12645338, 0.57063316, 0.54984110, + 0.12539383, 0.57431754, 0.54908564, + 0.12439474, 0.57800205, 0.54828740, + 0.12346281, 0.58168661, 0.54744498, + 0.12260562, 0.58537105, 0.54655722, + 0.12183122, 0.58905521, 0.54562298, + 0.12114807, 0.59273889, 0.54464114, + 0.12056501, 0.59642187, 0.54361058, + 0.12009154, 0.60010387, 0.54253043, + 0.11973756, 0.60378459, 0.54139999, + 0.11951163, 0.60746388, 0.54021751, + 0.11942341, 0.61114146, 0.53898192, + 0.11948255, 0.61481702, 0.53769219, + 0.11969858, 0.61849025, 0.53634733, + 0.12008079, 0.62216081, 0.53494633, + 0.12063824, 0.62582833, 0.53348834, + 0.12137972, 0.62949242, 0.53197275, + 0.12231244, 0.63315277, 0.53039808, + 0.12344358, 0.63680899, 0.52876343, + 0.12477953, 0.64046069, 0.52706792, + 0.12632581, 0.64410744, 0.52531069, + 0.12808703, 0.64774881, 0.52349092, + 0.13006688, 0.65138436, 0.52160791, + 0.13226797, 0.65501363, 0.51966086, + 0.13469183, 0.65863619, 0.51764880, + 0.13733921, 0.66225157, 0.51557101, + 0.14020991, 0.66585927, 0.51342680, + 0.14330291, 0.66945881, 0.51121549, + 0.14661640, 0.67304968, 0.50893644, + 0.15014782, 0.67663139, 0.50658890, + 0.15389405, 0.68020343, 0.50417217, + 0.15785146, 0.68376525, 0.50168574, + 0.16201598, 0.68731632, 0.49912906, + 0.16638320, 0.69085611, 0.49650163, + 0.17094840, 0.69438405, 0.49380294, + 0.17570671, 0.69789960, 0.49103252, + 0.18065314, 0.70140222, 0.48818938, + 0.18578266, 0.70489133, 0.48527326, + 0.19109018, 0.70836635, 0.48228395, + 0.19657063, 0.71182668, 0.47922108, + 0.20221902, 0.71527175, 0.47608431, + 0.20803045, 0.71870095, 0.47287330, + 0.21400015, 0.72211371, 0.46958774, + 0.22012381, 0.72550945, 0.46622638, + 0.22639690, 0.72888753, 0.46278934, + 0.23281498, 0.73224735, 0.45927675, + 0.23937390, 0.73558828, 0.45568838, + 0.24606968, 0.73890972, 0.45202405, + 0.25289851, 0.74221104, 0.44828355, + 0.25985676, 0.74549162, 0.44446673, + 0.26694127, 0.74875084, 0.44057284, + 0.27414922, 0.75198807, 0.43660090, + 0.28147681, 0.75520266, 0.43255207, + 0.28892102, 0.75839399, 0.42842626, + 0.29647899, 0.76156142, 0.42422341, + 0.30414796, 0.76470433, 0.41994346, + 0.31192534, 0.76782207, 0.41558638, + 0.31980860, 0.77091403, 0.41115215, + 0.32779580, 0.77397953, 0.40664011, + 0.33588539, 0.77701790, 0.40204917, + 0.34407411, 0.78002855, 0.39738103, + 0.35235985, 0.78301086, 0.39263579, + 0.36074053, 0.78596419, 0.38781353, + 0.36921420, 0.78888793, 0.38291438, + 0.37777892, 0.79178146, 0.37793850, + 0.38643282, 0.79464415, 0.37288606, + 0.39517408, 0.79747541, 0.36775726, + 0.40400101, 0.80027461, 0.36255223, + 0.41291350, 0.80304099, 0.35726893, + 0.42190813, 0.80577412, 0.35191009, + 0.43098317, 0.80847343, 0.34647607, + 0.44013691, 0.81113836, 0.34096730, + 0.44936763, 0.81376835, 0.33538426, + 0.45867362, 0.81636288, 0.32972749, + 0.46805314, 0.81892143, 0.32399761, + 0.47750446, 0.82144351, 0.31819529, + 0.48702580, 0.82392862, 0.31232133, + 0.49661536, 0.82637633, 0.30637661, + 0.50627130, 0.82878621, 0.30036211, + 0.51599182, 0.83115784, 0.29427888, + 0.52577622, 0.83349064, 0.28812650, + 0.53562110, 0.83578452, 0.28190832, + 0.54552440, 0.83803918, 0.27562602, + 0.55548397, 0.84025437, 0.26928147, + 0.56549760, 0.84242990, 0.26287683, + 0.57556297, 0.84456561, 0.25641457, + 0.58567772, 0.84666139, 0.24989748, + 0.59583934, 0.84871722, 0.24332878, + 0.60604528, 0.85073310, 0.23671214, + 0.61629283, 0.85270912, 0.23005179, + 0.62657923, 0.85464543, 0.22335258, + 0.63690157, 0.85654226, 0.21662012, + 0.64725685, 0.85839991, 0.20986086, + 0.65764197, 0.86021878, 0.20308229, + 0.66805369, 0.86199932, 0.19629307, + 0.67848868, 0.86374211, 0.18950326, + 0.68894351, 0.86544779, 0.18272455, + 0.69941463, 0.86711711, 0.17597055, + 0.70989842, 0.86875092, 0.16925712, + 0.72039115, 0.87035015, 0.16260273, + 0.73088902, 0.87191584, 0.15602894, + 0.74138803, 0.87344918, 0.14956101, + 0.75188414, 0.87495143, 0.14322828, + 0.76237342, 0.87642392, 0.13706449, + 0.77285183, 0.87786808, 0.13110864, + 0.78331535, 0.87928545, 0.12540538, + 0.79375994, 0.88067763, 0.12000532, + 0.80418159, 0.88204632, 0.11496505, + 0.81457634, 0.88339329, 0.11034678, + 0.82494028, 0.88472036, 0.10621724, + 0.83526959, 0.88602943, 0.10264590, + 0.84556056, 0.88732243, 0.09970219, + 0.85580960, 0.88860134, 0.09745186, + 0.86601325, 0.88986815, 0.09595277, + 0.87616824, 0.89112487, 0.09525046, + 0.88627146, 0.89237353, 0.09537439, + 0.89632002, 0.89361614, 0.09633538, + 0.90631121, 0.89485467, 0.09812496, + 0.91624212, 0.89609127, 0.10071680, + 0.92610579, 0.89732977, 0.10407067, + 0.93590444, 0.89857040, 0.10813094, + 0.94563626, 0.89981500, 0.11283773, + 0.95529972, 0.90106534, 0.11812832, + 0.96489353, 0.90232311, 0.12394051, + 0.97441665, 0.90358991, 0.13021494, + 0.98386829, 0.90486726, 0.13689671, + 0.99324789, 0.90615657, 0.14393620 }; // It would be nice if Matrix had a ctor allowing to do the // following without a copy - Matrix cmap (64, 3, 0.0); - std::copy (cmapv, cmapv + (64*3), cmap.fortran_vec ()); + Matrix cmap (256, 3, 0.0); + std::copy (cmapv, cmapv + (256*3), cmap.fortran_vec ()); return cmap; }
--- a/scripts/image/autumn.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/autumn.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## This colormap ranges from red through orange to yellow. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -71,3 +72,23 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (autumn ()), [256, 3]) +%!assert (size (autumn (16)), [16, 3]) + +%!assert (autumn (1), [1, 0, 0]) +%!assert (autumn (true), double ([1, 0, 0])) +%!assert (autumn (char (1)), double ([1, 0, 0])) +%!assert (autumn (int32 (1)), double ([1, 0, 0])) + +%!assert (autumn (0), zeros (0, 3)) +%!assert (autumn (-1), zeros (0, 3)) + +%!assert (autumn (11), [ones(1,11); [0:0.1:1]; zeros(1,11)]', eps) + +## Input validation +%!error <function called with too many inputs> autumn (1, 2) +%!error <N must be a scalar> autumn ("foo") +%!error <N must be a scalar> autumn ([1, 2, 3]) +%!error <N must be a scalar> autumn ({1, 2, 3})
--- a/scripts/image/bone.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/bone.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## gray-blue shades. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -98,3 +99,30 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (bone ()), [256, 3]) +%!assert (size (bone (16)), [16, 3]) + +%!assert (bone (1), [1/8, 1/8, 1/8]) +%!assert (bone (true), double ([1/8, 1/8, 1/8])) +%!assert (bone (char (1)), double ([1/8, 1/8, 1/8])) +%!assert (bone (int32 (1)), double ([1/8, 1/8, 1/8])) +%!assert (bone (2), [1/16, 1/8, 1/8; 1 ,1, 1]) + +%!assert (bone (0), zeros (0, 3)) +%!assert (bone (-1), zeros (0, 3)) + +%!test +%! a = [ 0, 0, 1/8; +%! 7/32, 11/32, 11/32; +%! 23/48, 9/16, 9/16; +%! 71/96, 25/32, 25/32; +%! 1, 1, 1]; +%! assert (bone (5), a, eps) + +## Input validation +%!error <function called with too many inputs> bone (1, 2) +%!error <N must be a scalar> bone ("foo") +%!error <N must be a scalar> bone ([1, 2, 3]) +%!error <N must be a scalar> bone ({1, 2, 3})
--- a/scripts/image/colorcube.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/colorcube.m Mon Dec 25 18:35:50 2023 -0500 @@ -34,16 +34,25 @@ ## blue, and gray. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn function map = colorcube (n) - if (nargin == 0) - n = rows (colormap); - elseif (! isscalar (n)) - error ("colorcube: N must be a scalar"); + if (nargin == 1) + if (! isscalar (n)) + error ("colorcube: N must be a scalar"); + endif + n = double (n); + else + hf = get (0, "currentfigure"); + if (! isempty (hf)) + n = rows (get (hf, "colormap")); + else + n = 256; + endif endif if (n < 9) @@ -99,3 +108,38 @@ %! axis ([1, 64, 0, 1], "xy"); %! set (gca, "xtick", []); %! colormap (colorcube (64)); + + +%!assert (size (colorcube ()), [256, 3]) +%!assert (size (colorcube (16)), [16, 3]) + +%!assert (colorcube (1), [0, 0, 0]) +%!assert (colorcube (true), double ([0, 0, 0])) +%!assert (colorcube (char (1)), double ([0, 0, 0])) +%!assert (colorcube (int32 (1)), double ([0, 0, 0])) + +%!assert (colorcube (0), zeros (0, 3)) +%!assert (colorcube (-1), zeros (0, 3)) + +%!assert (colorcube (8), gray (8)) + +%!test +%! a = [1, 1, 0; +%! 0, 1, 1; +%! 1, 0, 1; +%! 0.5, 0, 0; +%! 1, 0, 0; +%! 0, 0.5, 0; +%! 0, 1, 0; +%! 0, 0, 0.5; +%! 0, 0, 1; +%! 0, 0, 0; +%! 0.5, 0.5, 0.5; +%! 1, 1, 1]; +%! assert (colorcube (12), a, eps) + +## Input validation +%!error <function called with too many inputs> colorcube (1, 2) +%!error <N must be a scalar> colorcube ("foo") +%!error <N must be a scalar> colorcube ([1, 2, 3]) +%!error <N must be a scalar> colorcube ({1, 2, 3})
--- a/scripts/image/colormap.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/colormap.m Mon Dec 25 18:35:50 2023 -0500 @@ -32,7 +32,9 @@ ## @deftypefnx {} {} colormap @var{map_name} ## Query or set the current colormap. ## -## With no input arguments, @code{colormap} returns the current color map. +## With no input arguments, @code{colormap} returns the current color map. If +## there is no current figure, a new figure will be opened and the default +## color map will be returned. ## ## @code{colormap (@var{map})} sets the current colormap to @var{map}. The ## colormap should be an @var{n} row by 3 column matrix. The columns @@ -40,7 +42,7 @@ ## must be between 0 and 1 inclusive. The new colormap is returned. ## ## @code{colormap (@qcode{"default"})} restores the default colormap (the -## @code{viridis} map with 64 entries). The default colormap is returned. +## @code{viridis} map with 256 entries). The default colormap is returned. ## ## The map may also be specified by a string, @var{map_name}, which ## is the name of a function that returns a colormap. @@ -108,7 +110,7 @@ if (ischar (map)) map = lower (map); if (strcmp (map, "default")) - map = viridis (64); + map = viridis (256); else try map = feval (map); @@ -169,9 +171,9 @@ %! cmap = (get (gcf, "colormap")); %! assert (cmap, cmaptst); %! colormap ("default"); -%! assert (colormap (), viridis (64)); +%! assert (colormap (), viridis (256)); %! colormap ("ocean"); -%! assert (colormap, ocean (64)); +%! assert (colormap, ocean (256)); %! unwind_protect_cleanup %! close (hf); %! end_unwind_protect
--- a/scripts/image/cool.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/cool.m Mon Dec 25 18:35:50 2023 -0500 @@ -29,7 +29,8 @@ ## Create color colormap. The colormap varies from cyan to magenta. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -45,7 +46,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -70,3 +71,23 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (cool ()), [256, 3]) +%!assert (size (cool (16)), [16, 3]) + +%!assert (cool (1), [0, 1, 1]) +%!assert (cool (true), double ([0, 1, 1])) +%!assert (cool (char (1)), double ([0, 1, 1])) +%!assert (cool (int32 (1)), double ([0, 1, 1])) + +%!assert (cool (0), zeros (0, 3)) +%!assert (cool (-1), zeros (0, 3)) + +%!assert (cool (11), [[0:0.1:1]; [1:-0.1:0]; ones(1,11)]', eps) + +## Input validation +%!error <function called with too many inputs> cool (1, 2) +%!error <N must be a scalar> cool ("foo") +%!error <N must be a scalar> cool ([1, 2, 3]) +%!error <N must be a scalar> cool ({1, 2, 3})
--- a/scripts/image/copper.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/copper.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## tone. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -73,3 +74,26 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (copper ()), [256, 3]) +%!assert (size (copper (16)), [16, 3]) + +%!assert (copper (1), [0, 0, 0]) +%!assert (copper (true), double ([0, 0, 0])) +%!assert (copper (char (1)), double ([0, 0, 0])) +%!assert (copper (int32 (1)), double ([0, 0, 0])) + +%!assert (copper (0), zeros (0, 3)) +%!assert (copper (-1), zeros (0, 3)) + +%!test +%! a = [0.25, 0.15624, 0.0995] .* [0:5]'; +%! a(6) = 1; +%! assert (copper (6), a, eps) + +## Input validation +%!error <function called with too many inputs> copper (1, 2) +%!error <N must be a scalar> copper ("foo") +%!error <N must be a scalar> copper ([1, 2, 3]) +%!error <N must be a scalar> copper ({1, 2, 3})
--- a/scripts/image/cubehelix.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/cubehelix.m Mon Dec 25 18:35:50 2023 -0500 @@ -40,7 +40,8 @@ ## @end example ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## ## Reference: Green, D. A., 2011, ## @cite{A @nospell{colour} scheme for the display of astronomical intensity @@ -61,7 +62,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -96,3 +97,34 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (cubehelix ()), [256, 3]) +%!assert (size (cubehelix (16)), [16, 3]) + +%!assert (cubehelix (1), [0,0,0]) +%!assert (cubehelix (true), double ([0,0,0])) +%!assert (cubehelix (char (1)), double ([0,0,0])) +%!assert (cubehelix (int32 (1)), double ([0,0,0])) + +%!assert (cubehelix (0), zeros (0, 3)) +%!assert (cubehelix (-1), zeros (0, 3)) + +%!assert (cubehelix (2), [0, 0, 0; 1, 1, 1]) +%!assert ([cubehelix]([1,end],:), [0, 0, 0; 1, 1, 1]) + +%!shared a +%! a = [0, 0, 0; +%! 0.17004232121057959, 0.43679759647517287, 0.22372555555555556; +%! 0.82995767878942041, 0.56320240352482713, 0.77627444444444445; +%! 1, 1, 1]; + +%!assert (cubehelix (4), a, eps) + +%!shared # Clear shared varibles to avoid echo on unrelated test errors. + +## Input validation +%!error <function called with too many inputs> cubehelix (1, 2, 3, 4 ,5 ,6) +%!error <N must be a scalar> cubehelix ("foo") +%!error <N must be a scalar> cubehelix ([1, 2, 3]) +%!error <N must be a scalar> cubehelix ({1, 2, 3})
--- a/scripts/image/flag.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/flag.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## black with each index change. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif if (n == 1) @@ -68,3 +69,37 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + + +%!assert (size (flag ()), [256, 3]) +%!assert (size (flag (16)), [16, 3]) + +%!assert (flag (1), [1, 0, 0]) +%!assert (flag (true), double ([1, 0, 0])) +%!assert (flag (char (1)), double ([1, 0, 0])) +%!assert (flag (int32 (1)), double ([1, 0, 0])) + +%!assert (flag (0), zeros (0, 3)) +%!assert (flag (-1), zeros (0, 3)) + +%!test +%! a = [1, 0, 0; +%! 1, 1, 1; +%! 0, 0, 1; +%! 0, 0, 0; +%! 1, 0, 0; +%! 1, 1, 1; +%! 0, 0, 1; +%! 0, 0, 0; +%! 1, 0, 0; +%! 1, 1, 1; +%! 0, 0, 1; +%! 0, 0, 0]; +%! assert (flag (12), a, eps) + +## Input validation +%!error <function called with too many inputs> flag (1, 2) +%!error <N must be a scalar> flag ("foo") +%!error <N must be a scalar> flag ([1, 2, 3]) +%!error <N must be a scalar> flag ({1, 2, 3})
--- a/scripts/image/gray.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/gray.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## of gray. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -69,3 +70,23 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (gray ()), [256, 3]) +%!assert (size (gray (16)), [16, 3]) + +%!assert (gray (1), [0, 0, 0]) +%!assert (gray (true), double ([0, 0, 0])) +%!assert (gray (char (1)), double ([0, 0, 0])) +%!assert (gray (int32 (1)), double ([0, 0, 0])) + +%!assert (gray (0), zeros (0, 3)) +%!assert (gray (-1), zeros (0, 3)) + +%!assert (gray (11), [0:.1:1]' .* [1, 1, 1], eps) + +## Input validation +%!error <function called with too many inputs> gray (1, 2) +%!error <N must be a scalar> gray ("foo") +%!error <N must be a scalar> gray ([1, 2, 3]) +%!error <N must be a scalar> gray ({1, 2, 3})
--- a/scripts/image/hot.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/hot.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## red, orange, yellow, to white. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif if (n == 1) @@ -86,3 +87,36 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + +%!assert (size (hot ()), [256, 3]) +%!assert (size (hot (16)), [16, 3]) + +%!assert (hot (1), [1, 1, 1]) +%!assert (hot (true), double ([1, 1, 1])) +%!assert (hot (char (1)), double ([1, 1, 1])) +%!assert (hot (int32 (1)), double ([1, 1, 1])) +%!assert (hot (2), [1, 1, 1/2; 1, 1, 1]) +%!assert (hot (3), [1, 0, 0; 1, 1, 0; 1 1 1]) + +%!assert (hot (0), zeros (0, 3)) +%!assert (hot (-1), zeros (0, 3)) + +%!test +%! a = [0.25, 0, 0; +%! 0.50, 0, 0; +%! 0.75, 0, 0; +%! 1, 0, 0; +%! 1, 0.25, 0; +%! 1, 0.50, 0; +%! 1, 0.75, 0; +%! 1, 1, 0; +%! 1, 1, 1/3; +%! 1, 1, 2/3; +%! 1, 1, 1]; +%! assert (hot (11), a, eps); + +## Input validation +%!error <function called with too many inputs> hot (1, 2) +%!error <N must be a scalar> hot ("foo") +%!error <N must be a scalar> hot ([1, 2, 3]) +%!error <N must be a scalar> hot ({1, 2, 3})
--- a/scripts/image/hsv.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/hsv.m Mon Dec 25 18:35:50 2023 -0500 @@ -35,7 +35,8 @@ ## @code{hsv2rgb ([(0:N-1)'/N, ones(N,2)])}. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -51,7 +52,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -75,3 +76,22 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + +%!assert (size (hsv ()), [256, 3]) +%!assert (size (hsv (16)), [16, 3]) + +%!assert (hsv (1), [1, 0, 0]) +%!assert (hsv (true), double ([1, 0, 0])) +%!assert (hsv (char (1)), double ([1, 0, 0])) +%!assert (hsv (int32 (1)), double ([1, 0, 0])) + +%!assert (hsv (0), zeros (0, 3)) +%!assert (hsv (-1), zeros (0, 3)) + +%!assert (hsv (6)(:), [1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1]') + +## Input validation +%!error <function called with too many inputs> hsv (1, 2) +%!error <N must be a scalar> hsv ("foo") +%!error <N must be a scalar> hsv ([1, 2, 3]) +%!error <N must be a scalar> hsv ({1, 2, 3})
--- a/scripts/image/jet.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/jet.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## cyan, green, yellow, red, to dark red. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## ## Programming Note: The @code{jet} colormap is not perceptually uniform. ## Try the @code{viridis} colormap if that is important. For a drop-in @@ -51,7 +52,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif if (n == 1) @@ -110,3 +111,29 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (jet ()), [256, 3]) +%!assert (size (jet (16)), [16, 3]) + +%!assert (jet (1), [0, 1, 1]) +%!assert (jet (true), double ([0, 1, 1])) +%!assert (jet (char (1)), double ([0, 1, 1])) +%!assert (jet (int32 (1)), double ([0, 1, 1])) +%!assert (jet (2), [0, 0, 1; 0, 1, 1]) + +%!assert (jet (0), zeros (0, 3)) +%!assert (jet (-1), zeros (0, 3)) + +%!test +%! a = zeros(15, 3); +%! a([3:13],2) = [0.25, 0.5, 0.75, 1, 1, 1, 1, 1, 0.75, 0.5, 0.25]; +%! a([7:15], 1) = a([3:11], 2); +%! a(:,3) = flipud (a(:,1)); +%! assert (jet (15), a, eps) + +## Input validation +%!error <function called with too many inputs> jet (1, 2) +%!error <N must be a scalar> jet ("foo") +%!error <N must be a scalar> jet ([1, 2, 3]) +%!error <N must be a scalar> jet ({1, 2, 3})
--- a/scripts/image/lines.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/lines.m Mon Dec 25 18:35:50 2023 -0500 @@ -31,7 +31,8 @@ ## orange, yellow, purple, green, light blue, and dark red. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -47,7 +48,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -76,3 +77,26 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (lines ()), [256, 3]) +%!assert (size (lines (16)), [16, 3]) + +%!assert (lines (1), [0, 0, 1]) +%!assert (lines (true), double ([0, 0, 1])) +%!assert (lines (char (1)), double ([0, 0, 1])) +%!assert (lines (int32 (1)), double ([0, 0, 1])) + +%!assert (lines (0), zeros (0, 3)) +%!assert (lines (-1), zeros (0, 3)) + +%!test +%! a = get (groot, "defaultaxescolororder"); +%! nr = rows (a); +%! assert (lines (3*nr), [a;a;a]); + +## Input validation +%!error <function called with too many inputs> lines (1, 2) +%!error <N must be a scalar> lines ("foo") +%!error <N must be a scalar> lines ([1, 2, 3]) +%!error <N must be a scalar> lines ({1, 2, 3})
--- a/scripts/image/ocean.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/ocean.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## of blue. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -78,3 +79,31 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (ocean ()), [256, 3]) +%!assert (size (ocean (16)), [16, 3]) + +%!assert (ocean (1), [0, 0, 0]) +%!assert (ocean (true), double ([0, 0, 0])) +%!assert (ocean (char (1)), double ([0, 0, 0])) +%!assert (ocean (int32 (1)), double ([0, 0, 0])) + +%!assert (ocean (0), zeros (0, 3)) +%!assert (ocean (-1), zeros (0, 3)) + +%!assert (ocean()(1,:), [0, 0, 0]) +%!assert (ocean()(end,:), [1, 1, 1]) + +%!test +%! a = zeros (11, 3); +%! a([9:11],1) = [1/3, 2/3, 1]; +%! a([6:11], 2) = 1/6:1/6:1; +%! a(:, 3) = 0:.1:1; +%! assert (ocean (11), a, eps) + +## Input validation +%!error <function called with too many inputs> ocean (1, 2) +%!error <N must be a scalar> ocean ("foo") +%!error <N must be a scalar> ocean ([1, 2, 3]) +%!error <N must be a scalar> ocean ({1, 2, 3})
--- a/scripts/image/pink.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/pink.m Mon Dec 25 18:35:50 2023 -0500 @@ -32,7 +32,8 @@ ## This colormap gives a sepia tone when used on grayscale images. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -48,11 +49,13 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif if (n == 1) map = sqrt ([1/3, 1/3, 1/3]); +%!assert (pink (-1), zeros (0, 3)) + elseif (n == 2) map = sqrt ([1/3, 1/3, 1/6 1 1 1 ]); @@ -88,3 +91,29 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (pink ()), [256, 3]) +%!assert (size (pink (16)), [16, 3]) + +%!assert (pink (1), sqrt ([1/3, 1/3, 1/3]), eps) +%!assert (pink (true), double (sqrt ([1/3, 1/3, 1/3])), eps) +%!assert (pink (char (1)), double (sqrt ([1/3, 1/3, 1/3])), eps) +%!assert (pink (int32 (1)), double (sqrt ([1/3, 1/3, 1/3])), eps) +%!assert (pink (2), sqrt ([1/3, 1/3, 1/6; 1, 1, 1])) + +%!assert (pink (0), zeros (0, 3)) +%!assert (pink()(end,:), [1 1 1], eps) + +%!test +%! a = sqrt ([1/3, 0, 0; +%! 5/9, 5/9, 2/9; +%! 7/9, 7/9, 11/18; +%! 1, 1, 1]); +%! assert (pink (4), a, eps) + +## Input validation +%!error <function called with too many inputs> pink (1, 2) +%!error <N must be a scalar> pink ("foo") +%!error <N must be a scalar> pink ([1, 2, 3]) +%!error <N must be a scalar> pink ({1, 2, 3})
--- a/scripts/image/prism.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/prism.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## green, blue and violet with each index change. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -46,7 +47,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif if (n == 1) @@ -68,3 +69,26 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (prism ()), [256, 3]) +%!assert (size (prism (16)), [16, 3]) + +%!assert (prism (1), [1, 0, 0]) +%!assert (prism (true), double ([1, 0, 0])) +%!assert (prism (char (1)), double ([1, 0, 0])) +%!assert (prism (int32 (1)), double ([1, 0, 0])) + +%!assert (prism (0), zeros (0, 3)) +%!assert (prism (-1), zeros (0, 3)) + +%!test +%! a = [1, 0, 0; 1, 1/2, 0; 1, 1, 0; 0, 1, 0; 0, 0, 1; 2/3, 0, 1]; +%! nr = rows (a); +%! assert (prism (3*nr), [a;a;a]); + +## Input validation +%!error <function called with too many inputs> prism (1, 2) +%!error <N must be a scalar> prism ("foo") +%!error <N must be a scalar> prism ([1, 2, 3]) +%!error <N must be a scalar> prism ({1, 2, 3})
--- a/scripts/image/rainbow.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/rainbow.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## yellow, green, blue, to violet. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -49,7 +50,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -84,3 +85,22 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + +%!assert (size (rainbow ()), [256, 3]) +%!assert (size (rainbow (16)), [16, 3]) + +%!assert (rainbow (1), [1, 0, 0]) +%!assert (rainbow (true), double ([1, 0, 0])) +%!assert (rainbow (char (1)), double ([1, 0, 0])) +%!assert (rainbow (int32 (1)), double ([1, 0, 0])) + +%!assert (rainbow (0), zeros (0, 3)) +%!assert (rainbow (-1), zeros (0, 3)) + +%!assert (rainbow (6)(:), [1, 1, 1, 0, 0, 2/3, 0, 0.5, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1]', 3*eps) + +## Input validation +%!error <function called with too many inputs> rainbow (1, 2) +%!error <N must be a scalar> rainbow ("foo") +%!error <N must be a scalar> rainbow ([1, 2, 3]) +%!error <N must be a scalar> rainbow ({1, 2, 3})
--- a/scripts/image/spring.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/spring.m Mon Dec 25 18:35:50 2023 -0500 @@ -29,7 +29,8 @@ ## Create color colormap. This colormap varies from magenta to yellow. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -45,7 +46,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -70,3 +71,23 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (spring ()), [256, 3]) +%!assert (size (spring (16)), [16, 3]) +%!assert (all ((spring ()(:, 1)) == 1), true) +%!assert (spring (11)(:,2:3), [[0:0.1:1]; [1:-0.1:0]]', eps) + +%!assert (spring (1), [1, 0, 1]) +%!assert (spring (true), double ([1, 0, 1])) +%!assert (spring (char (1)), double ([1, 0, 1])) +%!assert (spring (int32 (1)), double ([1, 0, 1])) + +%!assert (spring (0), zeros (0, 3)) +%!assert (spring (-1), zeros (0, 3)) + +## Input validation +%!error <function called with too many inputs> spring (1, 2) +%!error <N must be a scalar> spring ("foo") +%!error <N must be a scalar> spring ([1, 2, 3]) +%!error <N must be a scalar> spring ({1, 2, 3})
--- a/scripts/image/summer.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/summer.m Mon Dec 25 18:35:50 2023 -0500 @@ -29,7 +29,8 @@ ## Create color colormap. This colormap varies from green to yellow. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -45,7 +46,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -70,3 +71,23 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (summer ()), [256, 3]) +%!assert (size (summer (16)), [16, 3]) + +%!assert (summer (1), [0, 0.5, 0.4]) +%!assert (summer (true), double ([0, 0.5, 0.4])) +%!assert (summer (char (1)), double ([0, 0.5, 0.4])) +%!assert (summer (int32 (1)), double ([0, 0.5, 0.4])) + +%!assert (summer (0), zeros (0, 3)) +%!assert (summer (-1), zeros (0, 3)) + +%!assert (summer (11), [[0:0.1:1]; [0.5:0.05:1]; 0.4 * ones(1,11)]', eps) + +## Input validation +%!error <function called with too many inputs> summer (1, 2) +%!error <N must be a scalar> summer ("foo") +%!error <N must be a scalar> summer ([1, 2, 3]) +%!error <N must be a scalar> summer ({1, 2, 3})
--- a/scripts/image/turbo.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/turbo.m Mon Dec 25 18:35:50 2023 -0500 @@ -31,7 +31,8 @@ ## uniform. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -51,7 +52,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -325,3 +326,30 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (turbo ()), [256, 3]) +%!assert (size (turbo (16)), [16, 3]) + +%!assert (turbo(0), zeros (0, 3)) +%!assert (turbo(-1), zeros (0, 3)) + +%!shared a +%! a = [0.18995, 0.07176, 0.23217; +%! 0.10342, 0.89600, 0.71500; +%! 0.98000, 0.73000, 0.22161; +%! 0.47960, 0.01583, 0.01055]; + +%!assert (turbo (1), a(4,:)) +%!assert (turbo (true), double (a(4,:))) +%!assert (turbo (char (1)), double (a(4,:))) +%!assert (turbo (int32 (1)), double (a(4,:))) +%!assert (turbo (4), a, eps) + +%!shared # Clear shared varibles to avoid echo on unrelated test errors. + +## Input validation +%!error <function called with too many inputs> turbo (1, 2) +%!error <N must be a scalar> turbo ("foo") +%!error <N must be a scalar> turbo ([1, 2, 3]) +%!error <N must be a scalar> turbo ({1, 2, 3})
--- a/scripts/image/viridis.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/viridis.m Mon Dec 25 18:35:50 2023 -0500 @@ -30,7 +30,8 @@ ## blue, green, to yellow. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -50,9 +51,10 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif + ## FIXME: Is there no algorithmic definition of the viridis colormap? persistent viridi = [0.26700401 0.00487433 0.32941519 0.26851048 0.00960483 0.33542652 @@ -325,3 +327,29 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + +%!assert (size (viridis ()), [256, 3]) +%!assert (size (viridis (16)), [16, 3]) + +%!assert (viridis (0), zeros (0, 3)) +%!assert (viridis (-1), zeros (0, 3)) + +%!shared a +%! a = [0.26700401, 0.00487433, 0.32941519; +%! 0.19063135, 0.40706148, 0.55608907; +%! 0.20803045, 0.71870095, 0.47287330; +%! 0.99324789, 0.90615657, 0.14393620]; + +%!assert (viridis (1), a(4,:)) +%!assert (viridis (true), double (a(4,:))) +%!assert (viridis (char (1)), double (a(4,:))) +%!assert (viridis (int32 (1)), double (a(4,:))) +%!assert (viridis (4), a, eps) + +%!shared # Clear shared varibles to avoid echo on unrelated test errors. + +## Input validation +%!error <function called with too many inputs> viridis (1, 2) +%!error <N must be a scalar> viridis ("foo") +%!error <N must be a scalar> viridis ([1, 2, 3]) +%!error <N must be a scalar> viridis ({1, 2, 3})
--- a/scripts/image/white.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/white.m Mon Dec 25 18:35:50 2023 -0500 @@ -29,7 +29,8 @@ ## Create color colormap. This colormap is completely white. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -45,7 +46,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif map = ones (n, 3); @@ -60,3 +61,21 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + +%!assert (size (white ()), [256, 3]) +%!assert (size (white (16)), [16, 3]) +%!assert (all ((white ()(:)) == 1), true) + +%!assert (white (1), [1, 1, 1]) +%!assert (white (true), double ([1, 1, 1])) +%!assert (white (char (1)), double ([1, 1, 1])) +%!assert (white (int32 (1)), double ([1, 1, 1])) +%!assert (white (0), zeros (0, 3)) +%!assert (white (-1), zeros (0, 3)) + + +## Input validation +%!error <function called with too many inputs> white (1, 2) +%!error <N must be a scalar> white ("foo") +%!error <N must be a scalar> white ([1, 2, 3]) +%!error <N must be a scalar> white ({1, 2, 3})
--- a/scripts/image/winter.m Sat Dec 23 14:14:26 2023 +0100 +++ b/scripts/image/winter.m Mon Dec 25 18:35:50 2023 -0500 @@ -29,7 +29,8 @@ ## Create color colormap. This colormap varies from blue to green. ## ## The argument @var{n} must be a scalar. -## If unspecified, the length of the current colormap, or 64, is used. +## If @var{n} is not specified the length of the current colormap is used. If +## there is no current colormap the default value of 256 is used. ## @seealso{colormap} ## @end deftypefn @@ -45,7 +46,7 @@ if (! isempty (hf)) n = rows (get (hf, "colormap")); else - n = 64; + n = 256; endif endif @@ -70,3 +71,23 @@ %! rgbplot (cmap, "composite"); %! subplot (2, 1, 2); %! rgbplot (cmap); + + +%!assert (size (winter ()), [256, 3]) +%!assert (size (winter (16)), [16, 3]) + +%!assert (winter (1), [0, 0, 1]) +%!assert (winter (true), double ([0, 0, 1])) +%!assert (winter (char (1)), double ([0, 0, 1])) +%!assert (winter (int32 (1)), double ([0, 0, 1])) + +%!assert (winter (0), zeros (0, 3)) +%!assert (winter (-1), zeros (0, 3)) + +%!assert (winter (11), [zeros(1,11); [0:0.1:1]; [1:-0.05:0.5]]', eps) + +## Input validation +%!error <function called with too many inputs> winter (1, 2) +%!error <N must be a scalar> winter ("foo") +%!error <N must be a scalar> winter ([1, 2, 3]) +%!error <N must be a scalar> winter ({1, 2, 3})