From 50673be1bdbefe2d3f9687a26c72774deeb92378 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sat, 12 Nov 2011 23:26:02 +0000 Subject: [PATCH] Added 0.9.3 documentation --- doc/api-0.9.2/a00001.html | 122 - doc/api-0.9.2/a00002.html | 120 - doc/api-0.9.2/a00003.html | 83 - doc/api-0.9.2/a00005.html | 77 - doc/api-0.9.2/a00006.html | 184 - doc/api-0.9.2/a00007.html | 57 - doc/api-0.9.2/a00008.html | 55 - doc/api-0.9.2/a00023_source.html | 392 --- doc/api-0.9.2/a00024_source.html | 60 - doc/api-0.9.2/a00025_source.html | 1129 ------- doc/api-0.9.2/a00026_source.html | 116 - doc/api-0.9.2/a00027_source.html | 122 - doc/api-0.9.2/a00028_source.html | 85 - doc/api-0.9.2/a00029_source.html | 143 - doc/api-0.9.2/a00030_source.html | 105 - doc/api-0.9.2/a00031_source.html | 95 - doc/api-0.9.2/a00032_source.html | 210 -- doc/api-0.9.2/a00033_source.html | 95 - doc/api-0.9.2/a00035_source.html | 95 - doc/api-0.9.2/a00036_source.html | 150 - doc/api-0.9.2/a00037_source.html | 141 - doc/api-0.9.2/a00038_source.html | 85 - doc/api-0.9.2/a00039_source.html | 215 -- doc/api-0.9.2/a00040_source.html | 107 - doc/api-0.9.2/a00041_source.html | 97 - doc/api-0.9.2/a00042_source.html | 100 - doc/api-0.9.2/a00043_source.html | 199 -- doc/api-0.9.2/a00044_source.html | 95 - doc/api-0.9.2/a00045_source.html | 114 - doc/api-0.9.2/a00046_source.html | 126 - doc/api-0.9.2/a00047_source.html | 112 - doc/api-0.9.2/a00048_source.html | 87 - doc/api-0.9.2/a00049_source.html | 91 - doc/api-0.9.2/a00050_source.html | 121 - doc/api-0.9.2/a00051_source.html | 217 -- doc/api-0.9.2/a00052_source.html | 124 - doc/api-0.9.2/a00053_source.html | 95 - doc/api-0.9.2/a00055_source.html | 47 - doc/api-0.9.2/a00056_source.html | 366 -- doc/api-0.9.2/a00057_source.html | 91 - doc/api-0.9.2/a00058_source.html | 65 - doc/api-0.9.2/a00059_source.html | 119 - doc/api-0.9.2/a00060_source.html | 85 - doc/api-0.9.2/a00061_source.html | 88 - doc/api-0.9.2/a00062_source.html | 105 - doc/api-0.9.2/a00063_source.html | 114 - doc/api-0.9.2/a00064_source.html | 104 - doc/api-0.9.2/a00065_source.html | 101 - doc/api-0.9.2/a00066_source.html | 94 - doc/api-0.9.2/a00067_source.html | 73 - doc/api-0.9.2/a00068_source.html | 73 - doc/api-0.9.2/a00069_source.html | 85 - doc/api-0.9.2/a00071_source.html | 102 - doc/api-0.9.2/a00072_source.html | 87 - doc/api-0.9.2/a00074_source.html | 98 - doc/api-0.9.2/a00075_source.html | 87 - doc/api-0.9.2/a00076_source.html | 139 - doc/api-0.9.2/a00077_source.html | 115 - doc/api-0.9.2/a00078_source.html | 120 - doc/api-0.9.2/a00079_source.html | 170 - doc/api-0.9.2/a00080_source.html | 85 - doc/api-0.9.2/a00081_source.html | 89 - doc/api-0.9.2/a00082_source.html | 96 - doc/api-0.9.2/a00083_source.html | 152 - doc/api-0.9.2/a00084_source.html | 85 - doc/api-0.9.2/a00085_source.html | 93 - doc/api-0.9.2/a00086_source.html | 106 - doc/api-0.9.2/a00087_source.html | 149 - doc/api-0.9.2/a00088_source.html | 96 - doc/api-0.9.2/a00089_source.html | 88 - doc/api-0.9.2/a00091_source.html | 96 - doc/api-0.9.2/a00092_source.html | 85 - doc/api-0.9.2/a00093_source.html | 94 - doc/api-0.9.2/a00094_source.html | 242 -- doc/api-0.9.2/a00095_source.html | 205 -- doc/api-0.9.2/a00096_source.html | 127 - doc/api-0.9.2/a00097_source.html | 90 - doc/api-0.9.2/a00098_source.html | 113 - doc/api-0.9.2/a00099_source.html | 134 - doc/api-0.9.2/a00101_source.html | 205 -- doc/api-0.9.2/a00102_source.html | 334 -- doc/api-0.9.2/a00103_source.html | 104 - doc/api-0.9.2/a00104_source.html | 107 - doc/api-0.9.2/a00105_source.html | 115 - doc/api-0.9.2/a00106_source.html | 95 - doc/api-0.9.2/a00107_source.html | 397 --- doc/api-0.9.2/a00108_source.html | 125 - doc/api-0.9.2/a00109_source.html | 140 - doc/api-0.9.2/a00110_source.html | 253 -- doc/api-0.9.2/a00111_source.html | 106 - doc/api-0.9.2/a00113_source.html | 120 - doc/api-0.9.2/a00114_source.html | 127 - doc/api-0.9.2/a00115_source.html | 100 - doc/api-0.9.2/a00116_source.html | 294 -- doc/api-0.9.2/a00117_source.html | 255 -- doc/api-0.9.2/a00118_source.html | 256 -- doc/api-0.9.2/a00119_source.html | 263 -- doc/api-0.9.2/a00120_source.html | 300 -- doc/api-0.9.2/a00121_source.html | 264 -- doc/api-0.9.2/a00122_source.html | 271 -- doc/api-0.9.2/a00123_source.html | 269 -- doc/api-0.9.2/a00124_source.html | 303 -- doc/api-0.9.2/a00125_source.html | 254 -- doc/api-0.9.2/a00126_source.html | 411 --- doc/api-0.9.2/a00127_source.html | 68 - doc/api-0.9.2/a00128_source.html | 66 - doc/api-0.9.2/a00129_source.html | 202 -- doc/api-0.9.2/a00130_source.html | 256 -- doc/api-0.9.2/a00131_source.html | 268 -- doc/api-0.9.2/a00132_source.html | 290 -- doc/api-0.9.2/a00133_source.html | 98 - doc/api-0.9.2/a00134_source.html | 91 - doc/api-0.9.2/a00135_source.html | 134 - doc/api-0.9.2/a00136_source.html | 100 - doc/api-0.9.2/a00137_source.html | 103 - doc/api-0.9.2/a00138_source.html | 121 - doc/api-0.9.2/a00139_source.html | 94 - doc/api-0.9.2/a00140_source.html | 47 - doc/api-0.9.2/a00141_source.html | 88 - doc/api-0.9.2/a00142_source.html | 190 -- doc/api-0.9.2/a00143.html | 62 - doc/api-0.9.2/a00144.html | 66 - doc/api-0.9.2/a00145.html | 72 - doc/api-0.9.2/a00149.html | 86 - doc/api-0.9.2/a00150.html | 84 - doc/api-0.9.2/a00152.html | 74 - doc/api-0.9.2/a00154.html | 91 - doc/api-0.9.2/a00155.html | 129 - doc/api-0.9.2/a00156.html | 349 -- doc/api-0.9.2/a00158.html | 73 - doc/api-0.9.2/a00159.html | 96 - doc/api-0.9.2/a00160.html | 73 - doc/api-0.9.2/a00161.html | 317 -- doc/api-0.9.2/a00162.html | 70 - doc/api-0.9.2/a00163.html | 93 - doc/api-0.9.2/a00164.html | 102 - doc/api-0.9.2/a00165.html | 61 - doc/api-0.9.2/a00166.html | 283 -- doc/api-0.9.2/a00167.html | 158 - doc/api-0.9.2/a00168.html | 124 - doc/api-0.9.2/a00169.html | 83 - doc/api-0.9.2/a00170.html | 89 - doc/api-0.9.2/a00171.html | 67 - doc/api-0.9.2/a00172.html | 198 -- doc/api-0.9.2/a00173.html | 77 - doc/api-0.9.2/a00174.html | 73 - doc/api-0.9.2/a00175.html | 313 -- doc/api-0.9.2/a00176.html | 73 - doc/api-0.9.2/a00177.html | 69 - doc/api-0.9.2/a00178.html | 95 - doc/api-0.9.2/a00179.html | 67 - doc/api-0.9.2/a00180.html | 61 - doc/api-0.9.2/a00181.html | 79 - doc/api-0.9.2/a00182.html | 75 - doc/api-0.9.2/a00184.html | 61 - doc/api-0.9.2/a00185.html | 69 - doc/api-0.9.2/a00186.html | 81 - doc/api-0.9.2/a00187.html | 66 - doc/api-0.9.2/a00188.html | 70 - doc/api-0.9.2/a00190.html | 67 - doc/api-0.9.2/a00191.html | 69 - doc/api-0.9.2/a00192.html | 71 - doc/api-0.9.2/a00193.html | 89 - doc/api-0.9.2/a00194.html | 83 - doc/api-0.9.2/a00195.html | 81 - doc/api-0.9.2/a00196.html | 68 - doc/api-0.9.2/a00197.html | 69 - doc/api-0.9.2/a00198.html | 71 - doc/api-0.9.2/a00199.html | 95 - doc/api-0.9.2/a00200.html | 67 - doc/api-0.9.2/a00201.html | 69 - doc/api-0.9.2/a00202.html | 91 - doc/api-0.9.2/a00204.html | 75 - doc/api-0.9.2/a00205.html | 69 - doc/api-0.9.2/a00206.html | 71 - doc/api-0.9.2/a00207.html | 69 - doc/api-0.9.2/a00208.html | 71 - doc/api-0.9.2/a00209.html | 113 - doc/api-0.9.2/a00210.html | 175 - doc/api-0.9.2/a00211.html | 69 - doc/api-0.9.2/a00213.html | 85 - doc/api-0.9.2/a00214.html | 71 - doc/api-0.9.2/a00215.html | 103 - doc/api-0.9.2/a00216.html | 72 - doc/api-0.9.2/a00217.html | 61 - doc/api-0.9.2/a00218.html | 67 - doc/api-0.9.2/a00219.html | 83 - doc/api-0.9.2/a00220.html | 83 - doc/api-0.9.2/a00221.html | 77 - doc/api-0.9.2/a00222.html | 72 - doc/api-0.9.2/a00224.html | 238 -- doc/api-0.9.2/a00225.html | 71 - doc/api-0.9.2/a00226.html | 72 - doc/api-0.9.2/a00229.html | 71 - doc/api-0.9.2/a00232.html | 61 - doc/api-0.9.2/a00234.html | 58 - doc/api-0.9.2/a00238.html | 2974 ----------------- doc/api-0.9.2/a00244.html | 645 ---- doc/api-0.9.2/a00247.html | 1054 ------ doc/api-0.9.2/a00252.html | 227 -- doc/api-0.9.2/a00267.html | 158 - doc/api-0.9.2/a00276.html | 470 --- doc/api-0.9.2/a00283.html | 150 - doc/api-0.9.2/a00285.html | 150 - doc/api-0.9.2/a00291.html | 222 -- doc/api-0.9.2/a00292.html | 1069 ------ doc/api-0.9.2/a00297.html | 160 - doc/api-0.9.2/classes.html | 51 - doc/api-0.9.2/files.html | 168 - doc/api-0.9.2/jquery.js | 54 - doc/api-0.9.2/modules.html | 126 - doc/api-0.9.2/namespacemembers.html | 171 - doc/api-0.9.2/namespacemembers_0x62.html | 167 - doc/api-0.9.2/namespacemembers_0x63.html | 296 -- doc/api-0.9.2/namespacemembers_0x64.html | 232 -- doc/api-0.9.2/namespacemembers_0x65.html | 138 - doc/api-0.9.2/namespacemembers_0x66.html | 530 --- doc/api-0.9.2/namespacemembers_0x67.html | 98 - doc/api-0.9.2/namespacemembers_0x68.html | 344 -- doc/api-0.9.2/namespacemembers_0x69.html | 291 -- doc/api-0.9.2/namespacemembers_0x6c.html | 287 -- doc/api-0.9.2/namespacemembers_0x6d.html | 365 -- doc/api-0.9.2/namespacemembers_0x6e.html | 114 - doc/api-0.9.2/namespacemembers_0x6f.html | 105 - doc/api-0.9.2/namespacemembers_0x70.html | 155 - doc/api-0.9.2/namespacemembers_0x71.html | 89 - doc/api-0.9.2/namespacemembers_0x72.html | 139 - doc/api-0.9.2/namespacemembers_0x73.html | 177 - doc/api-0.9.2/namespacemembers_0x74.html | 115 - doc/api-0.9.2/namespacemembers_0x75.html | 281 -- doc/api-0.9.2/namespacemembers_0x76.html | 104 - doc/api-0.9.2/namespacemembers_0x77.html | 83 - doc/api-0.9.2/namespacemembers_0x79.html | 92 - doc/api-0.9.2/namespacemembers_func.html | 170 - doc/api-0.9.2/namespacemembers_func_0x62.html | 112 - doc/api-0.9.2/namespacemembers_func_0x63.html | 157 - doc/api-0.9.2/namespacemembers_func_0x64.html | 138 - doc/api-0.9.2/namespacemembers_func_0x65.html | 137 - doc/api-0.9.2/namespacemembers_func_0x66.html | 250 -- doc/api-0.9.2/namespacemembers_func_0x67.html | 97 - doc/api-0.9.2/namespacemembers_func_0x68.html | 94 - doc/api-0.9.2/namespacemembers_func_0x69.html | 142 - doc/api-0.9.2/namespacemembers_func_0x6c.html | 130 - doc/api-0.9.2/namespacemembers_func_0x6d.html | 171 - doc/api-0.9.2/namespacemembers_func_0x6e.html | 113 - doc/api-0.9.2/namespacemembers_func_0x6f.html | 104 - doc/api-0.9.2/namespacemembers_func_0x70.html | 154 - doc/api-0.9.2/namespacemembers_func_0x71.html | 82 - doc/api-0.9.2/namespacemembers_func_0x72.html | 138 - doc/api-0.9.2/namespacemembers_func_0x73.html | 173 - doc/api-0.9.2/namespacemembers_func_0x74.html | 114 - doc/api-0.9.2/namespacemembers_func_0x75.html | 160 - doc/api-0.9.2/namespacemembers_func_0x76.html | 94 - doc/api-0.9.2/namespacemembers_func_0x79.html | 91 - doc/api-0.9.2/namespacemembers_type.html | 125 - doc/api-0.9.2/namespacemembers_type_0x63.html | 209 -- doc/api-0.9.2/namespacemembers_type_0x64.html | 164 - doc/api-0.9.2/namespacemembers_type_0x66.html | 350 -- doc/api-0.9.2/namespacemembers_type_0x68.html | 320 -- doc/api-0.9.2/namespacemembers_type_0x69.html | 218 -- doc/api-0.9.2/namespacemembers_type_0x6c.html | 227 -- doc/api-0.9.2/namespacemembers_type_0x6d.html | 263 -- doc/api-0.9.2/namespacemembers_type_0x71.html | 77 - doc/api-0.9.2/namespacemembers_type_0x73.html | 74 - doc/api-0.9.2/namespacemembers_type_0x75.html | 191 -- doc/api-0.9.2/namespacemembers_type_0x76.html | 80 - doc/api-0.9.2/namespacemembers_type_0x77.html | 74 - doc/api-0.9.2/namespaces.html | 133 - .../a00004.html => api-0.9.3/a00001.html} | 17 +- doc/api-0.9.3/a00002.html | 71 + doc/api-0.9.3/a00003.html | 74 + doc/api-0.9.3/a00004.html | 71 + .../a00009.html => api-0.9.3/a00005.html} | 23 +- .../a00010.html => api-0.9.3/a00006.html} | 25 +- .../a00011.html => api-0.9.3/a00007.html} | 25 +- .../a00012.html => api-0.9.3/a00008.html} | 25 +- .../a00013.html => api-0.9.3/a00009.html} | 25 +- .../a00014.html => api-0.9.3/a00010.html} | 25 +- .../a00015.html => api-0.9.3/a00011.html} | 25 +- .../a00016.html => api-0.9.3/a00012.html} | 25 +- .../a00017.html => api-0.9.3/a00013.html} | 25 +- .../a00018.html => api-0.9.3/a00014.html} | 25 +- .../a00019.html => api-0.9.3/a00015.html} | 27 +- .../a00020.html => api-0.9.3/a00016.html} | 43 +- .../a00021.html => api-0.9.3/a00017.html} | 49 +- .../a00022.html => api-0.9.3/a00018.html} | 107 +- doc/api-0.9.3/a00019.html | 89 + doc/api-0.9.3/a00019_source.html | 500 +++ doc/api-0.9.3/a00020.html | 63 + doc/api-0.9.3/a00020_source.html | 90 + doc/api-0.9.3/a00021.html | 73 + doc/api-0.9.3/a00021_source.html | 870 +++++ doc/api-0.9.3/a00022.html | 63 + doc/api-0.9.3/a00022_source.html | 833 +++++ doc/api-0.9.3/a00023.html | 63 + doc/api-0.9.3/a00023_source.html | 205 ++ doc/api-0.9.3/a00024.html | 97 + doc/api-0.9.3/a00024_source.html | 137 + doc/api-0.9.3/a00025.html | 105 + doc/api-0.9.3/a00025_source.html | 154 + doc/api-0.9.3/a00026_source.html | 107 + doc/api-0.9.3/a00027.html | 203 ++ doc/api-0.9.3/a00027_source.html | 163 + doc/api-0.9.3/a00028.html | 80 + doc/api-0.9.3/a00028_source.html | 127 + doc/api-0.9.3/a00029.html | 76 + doc/api-0.9.3/a00029_source.html | 117 + doc/api-0.9.3/a00030.html | 316 ++ doc/api-0.9.3/a00030_source.html | 223 ++ doc/api-0.9.3/a00031.html | 76 + doc/api-0.9.3/a00031_source.html | 117 + doc/api-0.9.3/a00032.html | 66 + doc/api-0.9.3/a00032_source.html | 220 ++ doc/api-0.9.3/a00033.html | 76 + doc/api-0.9.3/a00033_source.html | 117 + doc/api-0.9.3/a00034.html | 100 + doc/api-0.9.3/a00034_source.html | 169 + doc/api-0.9.3/a00035_source.html | 190 ++ doc/api-0.9.3/a00036.html | 70 + doc/api-0.9.3/a00036_source.html | 107 + doc/api-0.9.3/a00037_source.html | 237 ++ doc/api-0.9.3/a00038.html | 84 + doc/api-0.9.3/a00038_source.html | 128 + doc/api-0.9.3/a00039.html | 78 + doc/api-0.9.3/a00039_source.html | 118 + .../a00183.html => api-0.9.3/a00040.html} | 57 +- doc/api-0.9.3/a00040_source.html | 122 + doc/api-0.9.3/a00041.html | 118 + doc/api-0.9.3/a00041_source.html | 217 ++ .../a00147.html => api-0.9.3/a00042.html} | 58 +- doc/api-0.9.3/a00042_source.html | 113 + doc/api-0.9.3/a00043.html | 84 + doc/api-0.9.3/a00043_source.html | 132 + doc/api-0.9.3/a00044.html | 88 + doc/api-0.9.3/a00044_source.html | 146 + doc/api-0.9.3/a00045.html | 89 + doc/api-0.9.3/a00045_source.html | 134 + doc/api-0.9.3/a00046.html | 79 + doc/api-0.9.3/a00046_source.html | 106 + doc/api-0.9.3/a00047.html | 80 + doc/api-0.9.3/a00047_source.html | 118 + .../a00153.html => api-0.9.3/a00048.html} | 75 +- doc/api-0.9.3/a00048_source.html | 143 + doc/api-0.9.3/a00049.html | 84 + doc/api-0.9.3/a00049_source.html | 126 + doc/api-0.9.3/a00050.html | 69 + doc/api-0.9.3/a00050_source.html | 172 + doc/api-0.9.3/a00051.html | 74 + doc/api-0.9.3/a00051_source.html | 115 + doc/api-0.9.3/a00052.html | 99 + doc/api-0.9.3/a00052_source.html | 388 +++ doc/api-0.9.3/a00053.html | 72 + doc/api-0.9.3/a00053_source.html | 113 + doc/api-0.9.3/a00054.html | 63 + doc/api-0.9.3/a00054_source.html | 86 + doc/api-0.9.3/a00055.html | 86 + doc/api-0.9.3/a00055_source.html | 142 + doc/api-0.9.3/a00056.html | 71 + doc/api-0.9.3/a00056_source.html | 105 + doc/api-0.9.3/a00057.html | 84 + doc/api-0.9.3/a00057_source.html | 125 + .../a00189.html => api-0.9.3/a00058.html} | 53 +- doc/api-0.9.3/a00058_source.html | 127 + doc/api-0.9.3/a00059.html | 69 + doc/api-0.9.3/a00059_source.html | 135 + doc/api-0.9.3/a00060.html | 63 + doc/api-0.9.3/a00060_source.html | 125 + doc/api-0.9.3/a00061.html | 63 + doc/api-0.9.3/a00061_source.html | 122 + doc/api-0.9.3/a00062_source.html | 115 + doc/api-0.9.3/a00063.html | 63 + doc/api-0.9.3/a00063_source.html | 94 + doc/api-0.9.3/a00064.html | 63 + doc/api-0.9.3/a00064_source.html | 94 + doc/api-0.9.3/a00065.html | 70 + doc/api-0.9.3/a00065_source.html | 106 + .../a00066_source.html} | 12 +- doc/api-0.9.3/a00067.html | 76 + doc/api-0.9.3/a00067_source.html | 122 + doc/api-0.9.3/a00068.html | 74 + doc/api-0.9.3/a00068_source.html | 110 + doc/api-0.9.3/a00069.html | 320 ++ .../a00069_source.html} | 420 +-- doc/api-0.9.3/a00070.html | 74 + doc/api-0.9.3/a00070_source.html | 118 + doc/api-0.9.3/a00071.html | 73 + doc/api-0.9.3/a00071_source.html | 107 + doc/api-0.9.3/a00072.html | 94 + doc/api-0.9.3/a00072_source.html | 162 + doc/api-0.9.3/a00073.html | 86 + doc/api-0.9.3/a00073_source.html | 137 + doc/api-0.9.3/a00074.html | 86 + doc/api-0.9.3/a00074_source.html | 143 + doc/api-0.9.3/a00075.html | 100 + doc/api-0.9.3/a00075_source.html | 199 ++ doc/api-0.9.3/a00076.html | 71 + doc/api-0.9.3/a00076_source.html | 107 + doc/api-0.9.3/a00077.html | 74 + doc/api-0.9.3/a00077_source.html | 112 + doc/api-0.9.3/a00078.html | 74 + doc/api-0.9.3/a00078_source.html | 117 + doc/api-0.9.3/a00079.html | 64 + doc/api-0.9.3/a00079_source.html | 106 + doc/api-0.9.3/a00080.html | 92 + doc/api-0.9.3/a00080_source.html | 154 + doc/api-0.9.3/a00081.html | 72 + doc/api-0.9.3/a00081_source.html | 108 + doc/api-0.9.3/a00082.html | 74 + doc/api-0.9.3/a00082_source.html | 113 + doc/api-0.9.3/a00083.html | 98 + doc/api-0.9.3/a00083_source.html | 128 + .../a00203.html => api-0.9.3/a00084.html} | 283 +- doc/api-0.9.3/a00084_source.html | 174 + doc/api-0.9.3/a00085.html | 78 + doc/api-0.9.3/a00085_source.html | 120 + doc/api-0.9.3/a00086.html | 74 + doc/api-0.9.3/a00086_source.html | 111 + .../a00087_source.html} | 10 +- doc/api-0.9.3/a00088.html | 72 + doc/api-0.9.3/a00088_source.html | 108 + doc/api-0.9.3/a00089.html | 72 + doc/api-0.9.3/a00089_source.html | 109 + doc/api-0.9.3/a00090.html | 70 + doc/api-0.9.3/a00090_source.html | 106 + doc/api-0.9.3/a00091.html | 110 + doc/api-0.9.3/a00091_source.html | 260 ++ doc/api-0.9.3/a00092.html | 118 + doc/api-0.9.3/a00092_source.html | 223 ++ doc/api-0.9.3/a00093.html | 85 + doc/api-0.9.3/a00093_source.html | 130 + doc/api-0.9.3/a00094.html | 180 + doc/api-0.9.3/a00094_source.html | 148 + doc/api-0.9.3/a00095.html | 72 + doc/api-0.9.3/a00095_source.html | 110 + .../a00212.html => api-0.9.3/a00096.html} | 67 +- doc/api-0.9.3/a00096_source.html | 137 + doc/api-0.9.3/a00097.html | 90 + doc/api-0.9.3/a00097_source.html | 155 + doc/api-0.9.3/a00098.html | 63 + .../a00098_source.html} | 1018 +++--- doc/api-0.9.3/a00099_source.html | 229 ++ doc/api-0.9.3/a00100.html | 64 + doc/api-0.9.3/a00100_source.html | 358 ++ doc/api-0.9.3/a00101.html | 74 + doc/api-0.9.3/a00101_source.html | 127 + doc/api-0.9.3/a00102.html | 82 + doc/api-0.9.3/a00102_source.html | 114 + doc/api-0.9.3/a00103.html | 76 + doc/api-0.9.3/a00103_source.html | 111 + doc/api-0.9.3/a00104.html | 64 + doc/api-0.9.3/a00104_source.html | 418 +++ doc/api-0.9.3/a00105.html | 92 + doc/api-0.9.3/a00105_source.html | 156 + doc/api-0.9.3/a00106.html | 88 + doc/api-0.9.3/a00106_source.html | 160 + doc/api-0.9.3/a00107.html | 105 + doc/api-0.9.3/a00107_source.html | 270 ++ doc/api-0.9.3/a00108.html | 70 + doc/api-0.9.3/a00108_source.html | 120 + doc/api-0.9.3/a00109.html | 63 + .../a00109_source.html} | 305 +- doc/api-0.9.3/a00110.html | 69 + doc/api-0.9.3/a00110_source.html | 163 + doc/api-0.9.3/a00111.html | 74 + doc/api-0.9.3/a00111_source.html | 145 + doc/api-0.9.3/a00112.html | 63 + doc/api-0.9.3/a00112_source.html | 121 + doc/api-0.9.3/a00113.html | 84 + doc/api-0.9.3/a00113_source.html | 319 ++ doc/api-0.9.3/a00114.html | 78 + doc/api-0.9.3/a00114_source.html | 282 ++ doc/api-0.9.3/a00115.html | 78 + doc/api-0.9.3/a00115_source.html | 282 ++ doc/api-0.9.3/a00116.html | 78 + doc/api-0.9.3/a00116_source.html | 291 ++ doc/api-0.9.3/a00117.html | 84 + doc/api-0.9.3/a00117_source.html | 325 ++ doc/api-0.9.3/a00118.html | 78 + doc/api-0.9.3/a00118_source.html | 289 ++ doc/api-0.9.3/a00119.html | 78 + doc/api-0.9.3/a00119_source.html | 296 ++ doc/api-0.9.3/a00120.html | 78 + doc/api-0.9.3/a00120_source.html | 294 ++ doc/api-0.9.3/a00121.html | 84 + doc/api-0.9.3/a00121_source.html | 328 ++ doc/api-0.9.3/a00122.html | 312 ++ doc/api-0.9.3/a00122_source.html | 287 ++ doc/api-0.9.3/a00123.html | 170 + doc/api-0.9.3/a00123_source.html | 470 +++ doc/api-0.9.3/a00124.html | 63 + doc/api-0.9.3/a00124_source.html | 89 + doc/api-0.9.3/a00125.html | 63 + doc/api-0.9.3/a00125_source.html | 87 + doc/api-0.9.3/a00126.html | 63 + doc/api-0.9.3/a00126_source.html | 245 ++ doc/api-0.9.3/a00127.html | 85 + doc/api-0.9.3/a00127_source.html | 300 ++ doc/api-0.9.3/a00128.html | 85 + doc/api-0.9.3/a00128_source.html | 324 ++ doc/api-0.9.3/a00129.html | 85 + doc/api-0.9.3/a00129_source.html | 370 ++ doc/api-0.9.3/a00130.html | 80 + doc/api-0.9.3/a00130_source.html | 121 + .../a00131_source.html} | 37 +- doc/api-0.9.3/a00132.html | 81 + doc/api-0.9.3/a00132_source.html | 153 + doc/api-0.9.3/a00133.html | 74 + doc/api-0.9.3/a00133_source.html | 122 + doc/api-0.9.3/a00134.html | 79 + doc/api-0.9.3/a00134_source.html | 122 + .../a00227.html => api-0.9.3/a00135.html} | 57 +- doc/api-0.9.3/a00135_source.html | 143 + .../a00228.html => api-0.9.3/a00136.html} | 53 +- doc/api-0.9.3/a00136_source.html | 116 + doc/api-0.9.3/a00137.html | 74 + doc/api-0.9.3/a00137_source.html | 110 + doc/api-0.9.3/a00138.html | 66 + doc/api-0.9.3/a00138_source.html | 210 ++ .../a00305.html => api-0.9.3/a00142.html} | 19 +- doc/api-0.9.3/a00143.html | 318 ++ doc/api-0.9.3/a00144.html | 359 ++ doc/api-0.9.3/a00145.html | 481 +++ doc/api-0.9.3/a00146.html | 348 ++ doc/api-0.9.3/a00147.html | 177 + doc/api-0.9.3/a00148.html | 357 ++ doc/api-0.9.3/a00149.html | 525 +++ .../a00230.html => api-0.9.3/a00150.html} | 37 +- .../a00239.html => api-0.9.3/a00151.html} | 35 +- .../a00248.html => api-0.9.3/a00152.html} | 130 +- .../a00303.html => api-0.9.3/a00153.html} | 16 +- doc/api-0.9.3/a00154.html | 67 + .../a00235.html => api-0.9.3/a00155.html} | 299 +- .../a00236.html => api-0.9.3/a00156.html} | 396 +-- .../a00237.html => api-0.9.3/a00157.html} | 66 +- .../a00240.html => api-0.9.3/a00158.html} | 122 +- .../a00241.html => api-0.9.3/a00159.html} | 54 +- .../a00242.html => api-0.9.3/a00160.html} | 214 +- .../a00243.html => api-0.9.3/a00161.html} | 60 +- doc/api-0.9.3/a00162.html | 889 +++++ .../a00307.html => api-0.9.3/a00163.html} | 43 +- .../a00245.html => api-0.9.3/a00164.html} | 238 +- doc/api-0.9.3/a00165.html | 251 ++ doc/api-0.9.3/a00166.html | 49 + .../a00246.html => api-0.9.3/a00167.html} | 284 +- doc/api-0.9.3/a00168.html | 1105 ++++++ .../a00249.html => api-0.9.3/a00169.html} | 45 +- .../a00250.html => api-0.9.3/a00170.html} | 166 +- .../a00251.html => api-0.9.3/a00171.html} | 24 +- doc/api-0.9.3/a00172.html | 227 ++ .../a00253.html => api-0.9.3/a00173.html} | 54 +- .../a00254.html => api-0.9.3/a00174.html} | 42 +- .../a00255.html => api-0.9.3/a00175.html} | 357 +- .../a00256.html => api-0.9.3/a00176.html} | 42 +- doc/api-0.9.3/a00177.html | 49 + .../a00257.html => api-0.9.3/a00178.html} | 30 +- .../a00258.html => api-0.9.3/a00179.html} | 108 +- .../a00259.html => api-0.9.3/a00180.html} | 24 +- .../a00260.html => api-0.9.3/a00181.html} | 18 +- .../a00261.html => api-0.9.3/a00182.html} | 72 +- .../a00262.html => api-0.9.3/a00183.html} | 51 +- .../a00263.html => api-0.9.3/a00184.html} | 60 +- doc/api-0.9.3/a00185.html | 136 + .../a00264.html => api-0.9.3/a00186.html} | 28 +- .../a00265.html => api-0.9.3/a00187.html} | 98 +- .../a00266.html => api-0.9.3/a00188.html} | 31 +- doc/api-0.9.3/a00189.html | 328 ++ .../a00268.html => api-0.9.3/a00190.html} | 42 +- .../a00269.html => api-0.9.3/a00191.html} | 29 +- .../a00270.html => api-0.9.3/a00192.html} | 30 +- .../a00306.html => api-0.9.3/a00193.html} | 38 +- .../a00271.html => api-0.9.3/a00194.html} | 138 +- .../a00272.html => api-0.9.3/a00195.html} | 72 +- .../a00273.html => api-0.9.3/a00196.html} | 98 +- .../a00274.html => api-0.9.3/a00197.html} | 22 +- .../a00275.html => api-0.9.3/a00198.html} | 30 +- doc/api-0.9.3/a00199.html | 48 + doc/api-0.9.3/a00200.html | 362 ++ .../a00277.html => api-0.9.3/a00201.html} | 24 +- .../a00278.html => api-0.9.3/a00202.html} | 28 +- .../a00279.html => api-0.9.3/a00203.html} | 44 +- .../a00280.html => api-0.9.3/a00204.html} | 110 +- .../a00281.html => api-0.9.3/a00205.html} | 60 +- .../a00282.html => api-0.9.3/a00206.html} | 30 +- doc/api-0.9.3/a00207.html | 86 + .../a00284.html => api-0.9.3/a00208.html} | 34 +- doc/api-0.9.3/a00209.html | 86 + .../a00286.html => api-0.9.3/a00210.html} | 178 +- .../a00287.html => api-0.9.3/a00211.html} | 160 +- .../a00288.html => api-0.9.3/a00212.html} | 42 +- .../a00289.html => api-0.9.3/a00213.html} | 90 +- .../a00290.html => api-0.9.3/a00214.html} | 78 +- doc/api-0.9.3/a00215.html | 48 + doc/api-0.9.3/a00216.html | 48 + .../a00293.html => api-0.9.3/a00217.html} | 36 +- doc/api-0.9.3/a00218.html | 174 + .../a00294.html => api-0.9.3/a00219.html} | 24 +- .../a00295.html => api-0.9.3/a00220.html} | 108 +- .../a00296.html => api-0.9.3/a00221.html} | 72 +- .../a00308.html => api-0.9.3/a00222.html} | 56 +- doc/api-0.9.3/a00223.html | 48 + .../a00298.html => api-0.9.3/a00224.html} | 36 +- .../a00299.html => api-0.9.3/a00225.html} | 36 +- .../a00300.html => api-0.9.3/a00226.html} | 60 +- .../a00301.html => api-0.9.3/a00227.html} | 48 +- .../a00302.html => api-0.9.3/a00228.html} | 36 +- .../a00304.html => api-0.9.3/a00229.html} | 16 +- doc/api-0.9.3/a00230.html | 61 + doc/api-0.9.3/a00232.html | 56 + doc/api-0.9.3/a00233.html | 56 + doc/api-0.9.3/a00234.html | 56 + .../a00310.html => api-0.9.3/a00235.html} | 17 +- .../a00317.html => api-0.9.3/a00236.html} | 17 +- .../a00312.html => api-0.9.3/a00237.html} | 17 +- .../a00316.html => api-0.9.3/a00238.html} | 17 +- .../a00311.html => api-0.9.3/a00239.html} | 17 +- .../a00315.html => api-0.9.3/a00240.html} | 17 +- .../a00319.html => api-0.9.3/a00241.html} | 17 +- .../a00314.html => api-0.9.3/a00242.html} | 17 +- .../a00318.html => api-0.9.3/a00243.html} | 17 +- .../a00313.html => api-0.9.3/a00244.html} | 17 +- .../a00320.html => api-0.9.3/a00245.html} | 19 +- .../a00321.html => api-0.9.3/a00246.html} | 27 +- .../a00322.html => api-0.9.3/a00247.html} | 29 +- .../a00323.html => api-0.9.3/a00248.html} | 51 +- doc/{api-0.9.2 => api-0.9.3}/annotated.html | 42 +- doc/api-0.9.3/background2.jpg | Bin 0 -> 64448 bytes doc/{api-0.9.2 => api-0.9.3}/bc_s.png | Bin doc/api-0.9.3/classes.html | 53 + doc/{api-0.9.2 => api-0.9.3}/closed.png | Bin doc/{api-0.9.2 => api-0.9.3}/doxygen.css | 188 +- doc/{api-0.9.2 => api-0.9.3}/doxygen.png | Bin doc/api-0.9.3/files.html | 168 + doc/{api-0.9.2 => api-0.9.3}/functions.html | 17 +- .../functions_func.html | 17 +- doc/api-0.9.3/hierarchy.html | 72 + doc/{api-0.9.2 => api-0.9.3}/index.html | 32 +- doc/{api-0.9.2 => api-0.9.3}/logo-mini.png | Bin doc/api-0.9.3/modules.html | 139 + doc/{api-0.9.2 => api-0.9.3}/nav_f.png | Bin doc/{api-0.9.2 => api-0.9.3}/nav_h.png | Bin doc/{api-0.9.2 => api-0.9.3}/open.png | Bin .../pages.html} | 28 +- doc/{api-0.9.2 => api-0.9.3}/tab_a.png | Bin doc/{api-0.9.2 => api-0.9.3}/tab_b.png | Bin doc/{api-0.9.2 => api-0.9.3}/tab_h.png | Bin doc/{api-0.9.2 => api-0.9.3}/tab_s.png | Bin doc/{api-0.9.2 => api-0.9.3}/tabs.css | 0 doc/glm-0.9.2.pdf | Bin 359835 -> 0 bytes doc/glm-0.9.3.pdf | Bin 0 -> 1089842 bytes doc/src/data.xml | 25 +- readme.txt | 2 +- 651 files changed, 42100 insertions(+), 46895 deletions(-) delete mode 100644 doc/api-0.9.2/a00001.html delete mode 100644 doc/api-0.9.2/a00002.html delete mode 100644 doc/api-0.9.2/a00003.html delete mode 100644 doc/api-0.9.2/a00005.html delete mode 100644 doc/api-0.9.2/a00006.html delete mode 100644 doc/api-0.9.2/a00007.html delete mode 100644 doc/api-0.9.2/a00008.html delete mode 100644 doc/api-0.9.2/a00023_source.html delete mode 100644 doc/api-0.9.2/a00024_source.html delete mode 100644 doc/api-0.9.2/a00025_source.html delete mode 100644 doc/api-0.9.2/a00026_source.html delete mode 100644 doc/api-0.9.2/a00027_source.html delete mode 100644 doc/api-0.9.2/a00028_source.html delete mode 100644 doc/api-0.9.2/a00029_source.html delete mode 100644 doc/api-0.9.2/a00030_source.html delete mode 100644 doc/api-0.9.2/a00031_source.html delete mode 100644 doc/api-0.9.2/a00032_source.html delete mode 100644 doc/api-0.9.2/a00033_source.html delete mode 100644 doc/api-0.9.2/a00035_source.html delete mode 100644 doc/api-0.9.2/a00036_source.html delete mode 100644 doc/api-0.9.2/a00037_source.html delete mode 100644 doc/api-0.9.2/a00038_source.html delete mode 100644 doc/api-0.9.2/a00039_source.html delete mode 100644 doc/api-0.9.2/a00040_source.html delete mode 100644 doc/api-0.9.2/a00041_source.html delete mode 100644 doc/api-0.9.2/a00042_source.html delete mode 100644 doc/api-0.9.2/a00043_source.html delete mode 100644 doc/api-0.9.2/a00044_source.html delete mode 100644 doc/api-0.9.2/a00045_source.html delete mode 100644 doc/api-0.9.2/a00046_source.html delete mode 100644 doc/api-0.9.2/a00047_source.html delete mode 100644 doc/api-0.9.2/a00048_source.html delete mode 100644 doc/api-0.9.2/a00049_source.html delete mode 100644 doc/api-0.9.2/a00050_source.html delete mode 100644 doc/api-0.9.2/a00051_source.html delete mode 100644 doc/api-0.9.2/a00052_source.html delete mode 100644 doc/api-0.9.2/a00053_source.html delete mode 100644 doc/api-0.9.2/a00055_source.html delete mode 100644 doc/api-0.9.2/a00056_source.html delete mode 100644 doc/api-0.9.2/a00057_source.html delete mode 100644 doc/api-0.9.2/a00058_source.html delete mode 100644 doc/api-0.9.2/a00059_source.html delete mode 100644 doc/api-0.9.2/a00060_source.html delete mode 100644 doc/api-0.9.2/a00061_source.html delete mode 100644 doc/api-0.9.2/a00062_source.html delete mode 100644 doc/api-0.9.2/a00063_source.html delete mode 100644 doc/api-0.9.2/a00064_source.html delete mode 100644 doc/api-0.9.2/a00065_source.html delete mode 100644 doc/api-0.9.2/a00066_source.html delete mode 100644 doc/api-0.9.2/a00067_source.html delete mode 100644 doc/api-0.9.2/a00068_source.html delete mode 100644 doc/api-0.9.2/a00069_source.html delete mode 100644 doc/api-0.9.2/a00071_source.html delete mode 100644 doc/api-0.9.2/a00072_source.html delete mode 100644 doc/api-0.9.2/a00074_source.html delete mode 100644 doc/api-0.9.2/a00075_source.html delete mode 100644 doc/api-0.9.2/a00076_source.html delete mode 100644 doc/api-0.9.2/a00077_source.html delete mode 100644 doc/api-0.9.2/a00078_source.html delete mode 100644 doc/api-0.9.2/a00079_source.html delete mode 100644 doc/api-0.9.2/a00080_source.html delete mode 100644 doc/api-0.9.2/a00081_source.html delete mode 100644 doc/api-0.9.2/a00082_source.html delete mode 100644 doc/api-0.9.2/a00083_source.html delete mode 100644 doc/api-0.9.2/a00084_source.html delete mode 100644 doc/api-0.9.2/a00085_source.html delete mode 100644 doc/api-0.9.2/a00086_source.html delete mode 100644 doc/api-0.9.2/a00087_source.html delete mode 100644 doc/api-0.9.2/a00088_source.html delete mode 100644 doc/api-0.9.2/a00089_source.html delete mode 100644 doc/api-0.9.2/a00091_source.html delete mode 100644 doc/api-0.9.2/a00092_source.html delete mode 100644 doc/api-0.9.2/a00093_source.html delete mode 100644 doc/api-0.9.2/a00094_source.html delete mode 100644 doc/api-0.9.2/a00095_source.html delete mode 100644 doc/api-0.9.2/a00096_source.html delete mode 100644 doc/api-0.9.2/a00097_source.html delete mode 100644 doc/api-0.9.2/a00098_source.html delete mode 100644 doc/api-0.9.2/a00099_source.html delete mode 100644 doc/api-0.9.2/a00101_source.html delete mode 100644 doc/api-0.9.2/a00102_source.html delete mode 100644 doc/api-0.9.2/a00103_source.html delete mode 100644 doc/api-0.9.2/a00104_source.html delete mode 100644 doc/api-0.9.2/a00105_source.html delete mode 100644 doc/api-0.9.2/a00106_source.html delete mode 100644 doc/api-0.9.2/a00107_source.html delete mode 100644 doc/api-0.9.2/a00108_source.html delete mode 100644 doc/api-0.9.2/a00109_source.html delete mode 100644 doc/api-0.9.2/a00110_source.html delete mode 100644 doc/api-0.9.2/a00111_source.html delete mode 100644 doc/api-0.9.2/a00113_source.html delete mode 100644 doc/api-0.9.2/a00114_source.html delete mode 100644 doc/api-0.9.2/a00115_source.html delete mode 100644 doc/api-0.9.2/a00116_source.html delete mode 100644 doc/api-0.9.2/a00117_source.html delete mode 100644 doc/api-0.9.2/a00118_source.html delete mode 100644 doc/api-0.9.2/a00119_source.html delete mode 100644 doc/api-0.9.2/a00120_source.html delete mode 100644 doc/api-0.9.2/a00121_source.html delete mode 100644 doc/api-0.9.2/a00122_source.html delete mode 100644 doc/api-0.9.2/a00123_source.html delete mode 100644 doc/api-0.9.2/a00124_source.html delete mode 100644 doc/api-0.9.2/a00125_source.html delete mode 100644 doc/api-0.9.2/a00126_source.html delete mode 100644 doc/api-0.9.2/a00127_source.html delete mode 100644 doc/api-0.9.2/a00128_source.html delete mode 100644 doc/api-0.9.2/a00129_source.html delete mode 100644 doc/api-0.9.2/a00130_source.html delete mode 100644 doc/api-0.9.2/a00131_source.html delete mode 100644 doc/api-0.9.2/a00132_source.html delete mode 100644 doc/api-0.9.2/a00133_source.html delete mode 100644 doc/api-0.9.2/a00134_source.html delete mode 100644 doc/api-0.9.2/a00135_source.html delete mode 100644 doc/api-0.9.2/a00136_source.html delete mode 100644 doc/api-0.9.2/a00137_source.html delete mode 100644 doc/api-0.9.2/a00138_source.html delete mode 100644 doc/api-0.9.2/a00139_source.html delete mode 100644 doc/api-0.9.2/a00140_source.html delete mode 100644 doc/api-0.9.2/a00141_source.html delete mode 100644 doc/api-0.9.2/a00142_source.html delete mode 100644 doc/api-0.9.2/a00143.html delete mode 100644 doc/api-0.9.2/a00144.html delete mode 100644 doc/api-0.9.2/a00145.html delete mode 100644 doc/api-0.9.2/a00149.html delete mode 100644 doc/api-0.9.2/a00150.html delete mode 100644 doc/api-0.9.2/a00152.html delete mode 100644 doc/api-0.9.2/a00154.html delete mode 100644 doc/api-0.9.2/a00155.html delete mode 100644 doc/api-0.9.2/a00156.html delete mode 100644 doc/api-0.9.2/a00158.html delete mode 100644 doc/api-0.9.2/a00159.html delete mode 100644 doc/api-0.9.2/a00160.html delete mode 100644 doc/api-0.9.2/a00161.html delete mode 100644 doc/api-0.9.2/a00162.html delete mode 100644 doc/api-0.9.2/a00163.html delete mode 100644 doc/api-0.9.2/a00164.html delete mode 100644 doc/api-0.9.2/a00165.html delete mode 100644 doc/api-0.9.2/a00166.html delete mode 100644 doc/api-0.9.2/a00167.html delete mode 100644 doc/api-0.9.2/a00168.html delete mode 100644 doc/api-0.9.2/a00169.html delete mode 100644 doc/api-0.9.2/a00170.html delete mode 100644 doc/api-0.9.2/a00171.html delete mode 100644 doc/api-0.9.2/a00172.html delete mode 100644 doc/api-0.9.2/a00173.html delete mode 100644 doc/api-0.9.2/a00174.html delete mode 100644 doc/api-0.9.2/a00175.html delete mode 100644 doc/api-0.9.2/a00176.html delete mode 100644 doc/api-0.9.2/a00177.html delete mode 100644 doc/api-0.9.2/a00178.html delete mode 100644 doc/api-0.9.2/a00179.html delete mode 100644 doc/api-0.9.2/a00180.html delete mode 100644 doc/api-0.9.2/a00181.html delete mode 100644 doc/api-0.9.2/a00182.html delete mode 100644 doc/api-0.9.2/a00184.html delete mode 100644 doc/api-0.9.2/a00185.html delete mode 100644 doc/api-0.9.2/a00186.html delete mode 100644 doc/api-0.9.2/a00187.html delete mode 100644 doc/api-0.9.2/a00188.html delete mode 100644 doc/api-0.9.2/a00190.html delete mode 100644 doc/api-0.9.2/a00191.html delete mode 100644 doc/api-0.9.2/a00192.html delete mode 100644 doc/api-0.9.2/a00193.html delete mode 100644 doc/api-0.9.2/a00194.html delete mode 100644 doc/api-0.9.2/a00195.html delete mode 100644 doc/api-0.9.2/a00196.html delete mode 100644 doc/api-0.9.2/a00197.html delete mode 100644 doc/api-0.9.2/a00198.html delete mode 100644 doc/api-0.9.2/a00199.html delete mode 100644 doc/api-0.9.2/a00200.html delete mode 100644 doc/api-0.9.2/a00201.html delete mode 100644 doc/api-0.9.2/a00202.html delete mode 100644 doc/api-0.9.2/a00204.html delete mode 100644 doc/api-0.9.2/a00205.html delete mode 100644 doc/api-0.9.2/a00206.html delete mode 100644 doc/api-0.9.2/a00207.html delete mode 100644 doc/api-0.9.2/a00208.html delete mode 100644 doc/api-0.9.2/a00209.html delete mode 100644 doc/api-0.9.2/a00210.html delete mode 100644 doc/api-0.9.2/a00211.html delete mode 100644 doc/api-0.9.2/a00213.html delete mode 100644 doc/api-0.9.2/a00214.html delete mode 100644 doc/api-0.9.2/a00215.html delete mode 100644 doc/api-0.9.2/a00216.html delete mode 100644 doc/api-0.9.2/a00217.html delete mode 100644 doc/api-0.9.2/a00218.html delete mode 100644 doc/api-0.9.2/a00219.html delete mode 100644 doc/api-0.9.2/a00220.html delete mode 100644 doc/api-0.9.2/a00221.html delete mode 100644 doc/api-0.9.2/a00222.html delete mode 100644 doc/api-0.9.2/a00224.html delete mode 100644 doc/api-0.9.2/a00225.html delete mode 100644 doc/api-0.9.2/a00226.html delete mode 100644 doc/api-0.9.2/a00229.html delete mode 100644 doc/api-0.9.2/a00232.html delete mode 100644 doc/api-0.9.2/a00234.html delete mode 100644 doc/api-0.9.2/a00238.html delete mode 100644 doc/api-0.9.2/a00244.html delete mode 100644 doc/api-0.9.2/a00247.html delete mode 100644 doc/api-0.9.2/a00252.html delete mode 100644 doc/api-0.9.2/a00267.html delete mode 100644 doc/api-0.9.2/a00276.html delete mode 100644 doc/api-0.9.2/a00283.html delete mode 100644 doc/api-0.9.2/a00285.html delete mode 100644 doc/api-0.9.2/a00291.html delete mode 100644 doc/api-0.9.2/a00292.html delete mode 100644 doc/api-0.9.2/a00297.html delete mode 100644 doc/api-0.9.2/classes.html delete mode 100644 doc/api-0.9.2/files.html delete mode 100644 doc/api-0.9.2/jquery.js delete mode 100644 doc/api-0.9.2/modules.html delete mode 100644 doc/api-0.9.2/namespacemembers.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x62.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x63.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x64.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x65.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x66.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x67.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x68.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x69.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x6c.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x6d.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x6e.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x6f.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x70.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x71.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x72.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x73.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x74.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x75.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x76.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x77.html delete mode 100644 doc/api-0.9.2/namespacemembers_0x79.html delete mode 100644 doc/api-0.9.2/namespacemembers_func.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x62.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x63.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x64.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x65.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x66.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x67.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x68.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x69.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x6c.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x6d.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x6e.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x6f.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x70.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x71.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x72.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x73.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x74.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x75.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x76.html delete mode 100644 doc/api-0.9.2/namespacemembers_func_0x79.html delete mode 100644 doc/api-0.9.2/namespacemembers_type.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x63.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x64.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x66.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x68.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x69.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x6c.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x6d.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x71.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x73.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x75.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x76.html delete mode 100644 doc/api-0.9.2/namespacemembers_type_0x77.html delete mode 100644 doc/api-0.9.2/namespaces.html rename doc/{api-0.9.2/a00004.html => api-0.9.3/a00001.html} (78%) create mode 100644 doc/api-0.9.3/a00002.html create mode 100644 doc/api-0.9.3/a00003.html create mode 100644 doc/api-0.9.3/a00004.html rename doc/{api-0.9.2/a00009.html => api-0.9.3/a00005.html} (65%) rename doc/{api-0.9.2/a00010.html => api-0.9.3/a00006.html} (67%) rename doc/{api-0.9.2/a00011.html => api-0.9.3/a00007.html} (67%) rename doc/{api-0.9.2/a00012.html => api-0.9.3/a00008.html} (67%) rename doc/{api-0.9.2/a00013.html => api-0.9.3/a00009.html} (67%) rename doc/{api-0.9.2/a00014.html => api-0.9.3/a00010.html} (67%) rename doc/{api-0.9.2/a00015.html => api-0.9.3/a00011.html} (67%) rename doc/{api-0.9.2/a00016.html => api-0.9.3/a00012.html} (67%) rename doc/{api-0.9.2/a00017.html => api-0.9.3/a00013.html} (67%) rename doc/{api-0.9.2/a00018.html => api-0.9.3/a00014.html} (67%) rename doc/{api-0.9.2/a00019.html => api-0.9.3/a00015.html} (68%) rename doc/{api-0.9.2/a00020.html => api-0.9.3/a00016.html} (74%) rename doc/{api-0.9.2/a00021.html => api-0.9.3/a00017.html} (75%) rename doc/{api-0.9.2/a00022.html => api-0.9.3/a00018.html} (80%) create mode 100644 doc/api-0.9.3/a00019.html create mode 100644 doc/api-0.9.3/a00019_source.html create mode 100644 doc/api-0.9.3/a00020.html create mode 100644 doc/api-0.9.3/a00020_source.html create mode 100644 doc/api-0.9.3/a00021.html create mode 100644 doc/api-0.9.3/a00021_source.html create mode 100644 doc/api-0.9.3/a00022.html create mode 100644 doc/api-0.9.3/a00022_source.html create mode 100644 doc/api-0.9.3/a00023.html create mode 100644 doc/api-0.9.3/a00023_source.html create mode 100644 doc/api-0.9.3/a00024.html create mode 100644 doc/api-0.9.3/a00024_source.html create mode 100644 doc/api-0.9.3/a00025.html create mode 100644 doc/api-0.9.3/a00025_source.html create mode 100644 doc/api-0.9.3/a00026_source.html create mode 100644 doc/api-0.9.3/a00027.html create mode 100644 doc/api-0.9.3/a00027_source.html create mode 100644 doc/api-0.9.3/a00028.html create mode 100644 doc/api-0.9.3/a00028_source.html create mode 100644 doc/api-0.9.3/a00029.html create mode 100644 doc/api-0.9.3/a00029_source.html create mode 100644 doc/api-0.9.3/a00030.html create mode 100644 doc/api-0.9.3/a00030_source.html create mode 100644 doc/api-0.9.3/a00031.html create mode 100644 doc/api-0.9.3/a00031_source.html create mode 100644 doc/api-0.9.3/a00032.html create mode 100644 doc/api-0.9.3/a00032_source.html create mode 100644 doc/api-0.9.3/a00033.html create mode 100644 doc/api-0.9.3/a00033_source.html create mode 100644 doc/api-0.9.3/a00034.html create mode 100644 doc/api-0.9.3/a00034_source.html create mode 100644 doc/api-0.9.3/a00035_source.html create mode 100644 doc/api-0.9.3/a00036.html create mode 100644 doc/api-0.9.3/a00036_source.html create mode 100644 doc/api-0.9.3/a00037_source.html create mode 100644 doc/api-0.9.3/a00038.html create mode 100644 doc/api-0.9.3/a00038_source.html create mode 100644 doc/api-0.9.3/a00039.html create mode 100644 doc/api-0.9.3/a00039_source.html rename doc/{api-0.9.2/a00183.html => api-0.9.3/a00040.html} (51%) create mode 100644 doc/api-0.9.3/a00040_source.html create mode 100644 doc/api-0.9.3/a00041.html create mode 100644 doc/api-0.9.3/a00041_source.html rename doc/{api-0.9.2/a00147.html => api-0.9.3/a00042.html} (53%) create mode 100644 doc/api-0.9.3/a00042_source.html create mode 100644 doc/api-0.9.3/a00043.html create mode 100644 doc/api-0.9.3/a00043_source.html create mode 100644 doc/api-0.9.3/a00044.html create mode 100644 doc/api-0.9.3/a00044_source.html create mode 100644 doc/api-0.9.3/a00045.html create mode 100644 doc/api-0.9.3/a00045_source.html create mode 100644 doc/api-0.9.3/a00046.html create mode 100644 doc/api-0.9.3/a00046_source.html create mode 100644 doc/api-0.9.3/a00047.html create mode 100644 doc/api-0.9.3/a00047_source.html rename doc/{api-0.9.2/a00153.html => api-0.9.3/a00048.html} (61%) create mode 100644 doc/api-0.9.3/a00048_source.html create mode 100644 doc/api-0.9.3/a00049.html create mode 100644 doc/api-0.9.3/a00049_source.html create mode 100644 doc/api-0.9.3/a00050.html create mode 100644 doc/api-0.9.3/a00050_source.html create mode 100644 doc/api-0.9.3/a00051.html create mode 100644 doc/api-0.9.3/a00051_source.html create mode 100644 doc/api-0.9.3/a00052.html create mode 100644 doc/api-0.9.3/a00052_source.html create mode 100644 doc/api-0.9.3/a00053.html create mode 100644 doc/api-0.9.3/a00053_source.html create mode 100644 doc/api-0.9.3/a00054.html create mode 100644 doc/api-0.9.3/a00054_source.html create mode 100644 doc/api-0.9.3/a00055.html create mode 100644 doc/api-0.9.3/a00055_source.html create mode 100644 doc/api-0.9.3/a00056.html create mode 100644 doc/api-0.9.3/a00056_source.html create mode 100644 doc/api-0.9.3/a00057.html create mode 100644 doc/api-0.9.3/a00057_source.html rename doc/{api-0.9.2/a00189.html => api-0.9.3/a00058.html} (50%) create mode 100644 doc/api-0.9.3/a00058_source.html create mode 100644 doc/api-0.9.3/a00059.html create mode 100644 doc/api-0.9.3/a00059_source.html create mode 100644 doc/api-0.9.3/a00060.html create mode 100644 doc/api-0.9.3/a00060_source.html create mode 100644 doc/api-0.9.3/a00061.html create mode 100644 doc/api-0.9.3/a00061_source.html create mode 100644 doc/api-0.9.3/a00062_source.html create mode 100644 doc/api-0.9.3/a00063.html create mode 100644 doc/api-0.9.3/a00063_source.html create mode 100644 doc/api-0.9.3/a00064.html create mode 100644 doc/api-0.9.3/a00064_source.html create mode 100644 doc/api-0.9.3/a00065.html create mode 100644 doc/api-0.9.3/a00065_source.html rename doc/{api-0.9.2/a00070_source.html => api-0.9.3/a00066_source.html} (99%) create mode 100644 doc/api-0.9.3/a00067.html create mode 100644 doc/api-0.9.3/a00067_source.html create mode 100644 doc/api-0.9.3/a00068.html create mode 100644 doc/api-0.9.3/a00068_source.html create mode 100644 doc/api-0.9.3/a00069.html rename doc/{api-0.9.2/a00073_source.html => api-0.9.3/a00069_source.html} (53%) create mode 100644 doc/api-0.9.3/a00070.html create mode 100644 doc/api-0.9.3/a00070_source.html create mode 100644 doc/api-0.9.3/a00071.html create mode 100644 doc/api-0.9.3/a00071_source.html create mode 100644 doc/api-0.9.3/a00072.html create mode 100644 doc/api-0.9.3/a00072_source.html create mode 100644 doc/api-0.9.3/a00073.html create mode 100644 doc/api-0.9.3/a00073_source.html create mode 100644 doc/api-0.9.3/a00074.html create mode 100644 doc/api-0.9.3/a00074_source.html create mode 100644 doc/api-0.9.3/a00075.html create mode 100644 doc/api-0.9.3/a00075_source.html create mode 100644 doc/api-0.9.3/a00076.html create mode 100644 doc/api-0.9.3/a00076_source.html create mode 100644 doc/api-0.9.3/a00077.html create mode 100644 doc/api-0.9.3/a00077_source.html create mode 100644 doc/api-0.9.3/a00078.html create mode 100644 doc/api-0.9.3/a00078_source.html create mode 100644 doc/api-0.9.3/a00079.html create mode 100644 doc/api-0.9.3/a00079_source.html create mode 100644 doc/api-0.9.3/a00080.html create mode 100644 doc/api-0.9.3/a00080_source.html create mode 100644 doc/api-0.9.3/a00081.html create mode 100644 doc/api-0.9.3/a00081_source.html create mode 100644 doc/api-0.9.3/a00082.html create mode 100644 doc/api-0.9.3/a00082_source.html create mode 100644 doc/api-0.9.3/a00083.html create mode 100644 doc/api-0.9.3/a00083_source.html rename doc/{api-0.9.2/a00203.html => api-0.9.3/a00084.html} (52%) create mode 100644 doc/api-0.9.3/a00084_source.html create mode 100644 doc/api-0.9.3/a00085.html create mode 100644 doc/api-0.9.3/a00085_source.html create mode 100644 doc/api-0.9.3/a00086.html create mode 100644 doc/api-0.9.3/a00086_source.html rename doc/{api-0.9.2/a00090_source.html => api-0.9.3/a00087_source.html} (83%) create mode 100644 doc/api-0.9.3/a00088.html create mode 100644 doc/api-0.9.3/a00088_source.html create mode 100644 doc/api-0.9.3/a00089.html create mode 100644 doc/api-0.9.3/a00089_source.html create mode 100644 doc/api-0.9.3/a00090.html create mode 100644 doc/api-0.9.3/a00090_source.html create mode 100644 doc/api-0.9.3/a00091.html create mode 100644 doc/api-0.9.3/a00091_source.html create mode 100644 doc/api-0.9.3/a00092.html create mode 100644 doc/api-0.9.3/a00092_source.html create mode 100644 doc/api-0.9.3/a00093.html create mode 100644 doc/api-0.9.3/a00093_source.html create mode 100644 doc/api-0.9.3/a00094.html create mode 100644 doc/api-0.9.3/a00094_source.html create mode 100644 doc/api-0.9.3/a00095.html create mode 100644 doc/api-0.9.3/a00095_source.html rename doc/{api-0.9.2/a00212.html => api-0.9.3/a00096.html} (58%) create mode 100644 doc/api-0.9.3/a00096_source.html create mode 100644 doc/api-0.9.3/a00097.html create mode 100644 doc/api-0.9.3/a00097_source.html create mode 100644 doc/api-0.9.3/a00098.html rename doc/{api-0.9.2/a00100_source.html => api-0.9.3/a00098_source.html} (62%) create mode 100644 doc/api-0.9.3/a00099_source.html create mode 100644 doc/api-0.9.3/a00100.html create mode 100644 doc/api-0.9.3/a00100_source.html create mode 100644 doc/api-0.9.3/a00101.html create mode 100644 doc/api-0.9.3/a00101_source.html create mode 100644 doc/api-0.9.3/a00102.html create mode 100644 doc/api-0.9.3/a00102_source.html create mode 100644 doc/api-0.9.3/a00103.html create mode 100644 doc/api-0.9.3/a00103_source.html create mode 100644 doc/api-0.9.3/a00104.html create mode 100644 doc/api-0.9.3/a00104_source.html create mode 100644 doc/api-0.9.3/a00105.html create mode 100644 doc/api-0.9.3/a00105_source.html create mode 100644 doc/api-0.9.3/a00106.html create mode 100644 doc/api-0.9.3/a00106_source.html create mode 100644 doc/api-0.9.3/a00107.html create mode 100644 doc/api-0.9.3/a00107_source.html create mode 100644 doc/api-0.9.3/a00108.html create mode 100644 doc/api-0.9.3/a00108_source.html create mode 100644 doc/api-0.9.3/a00109.html rename doc/{api-0.9.2/a00112_source.html => api-0.9.3/a00109_source.html} (50%) create mode 100644 doc/api-0.9.3/a00110.html create mode 100644 doc/api-0.9.3/a00110_source.html create mode 100644 doc/api-0.9.3/a00111.html create mode 100644 doc/api-0.9.3/a00111_source.html create mode 100644 doc/api-0.9.3/a00112.html create mode 100644 doc/api-0.9.3/a00112_source.html create mode 100644 doc/api-0.9.3/a00113.html create mode 100644 doc/api-0.9.3/a00113_source.html create mode 100644 doc/api-0.9.3/a00114.html create mode 100644 doc/api-0.9.3/a00114_source.html create mode 100644 doc/api-0.9.3/a00115.html create mode 100644 doc/api-0.9.3/a00115_source.html create mode 100644 doc/api-0.9.3/a00116.html create mode 100644 doc/api-0.9.3/a00116_source.html create mode 100644 doc/api-0.9.3/a00117.html create mode 100644 doc/api-0.9.3/a00117_source.html create mode 100644 doc/api-0.9.3/a00118.html create mode 100644 doc/api-0.9.3/a00118_source.html create mode 100644 doc/api-0.9.3/a00119.html create mode 100644 doc/api-0.9.3/a00119_source.html create mode 100644 doc/api-0.9.3/a00120.html create mode 100644 doc/api-0.9.3/a00120_source.html create mode 100644 doc/api-0.9.3/a00121.html create mode 100644 doc/api-0.9.3/a00121_source.html create mode 100644 doc/api-0.9.3/a00122.html create mode 100644 doc/api-0.9.3/a00122_source.html create mode 100644 doc/api-0.9.3/a00123.html create mode 100644 doc/api-0.9.3/a00123_source.html create mode 100644 doc/api-0.9.3/a00124.html create mode 100644 doc/api-0.9.3/a00124_source.html create mode 100644 doc/api-0.9.3/a00125.html create mode 100644 doc/api-0.9.3/a00125_source.html create mode 100644 doc/api-0.9.3/a00126.html create mode 100644 doc/api-0.9.3/a00126_source.html create mode 100644 doc/api-0.9.3/a00127.html create mode 100644 doc/api-0.9.3/a00127_source.html create mode 100644 doc/api-0.9.3/a00128.html create mode 100644 doc/api-0.9.3/a00128_source.html create mode 100644 doc/api-0.9.3/a00129.html create mode 100644 doc/api-0.9.3/a00129_source.html create mode 100644 doc/api-0.9.3/a00130.html create mode 100644 doc/api-0.9.3/a00130_source.html rename doc/{api-0.9.2/a00034_source.html => api-0.9.3/a00131_source.html} (50%) create mode 100644 doc/api-0.9.3/a00132.html create mode 100644 doc/api-0.9.3/a00132_source.html create mode 100644 doc/api-0.9.3/a00133.html create mode 100644 doc/api-0.9.3/a00133_source.html create mode 100644 doc/api-0.9.3/a00134.html create mode 100644 doc/api-0.9.3/a00134_source.html rename doc/{api-0.9.2/a00227.html => api-0.9.3/a00135.html} (58%) create mode 100644 doc/api-0.9.3/a00135_source.html rename doc/{api-0.9.2/a00228.html => api-0.9.3/a00136.html} (51%) create mode 100644 doc/api-0.9.3/a00136_source.html create mode 100644 doc/api-0.9.3/a00137.html create mode 100644 doc/api-0.9.3/a00137_source.html create mode 100644 doc/api-0.9.3/a00138.html create mode 100644 doc/api-0.9.3/a00138_source.html rename doc/{api-0.9.2/a00305.html => api-0.9.3/a00142.html} (67%) create mode 100644 doc/api-0.9.3/a00143.html create mode 100644 doc/api-0.9.3/a00144.html create mode 100644 doc/api-0.9.3/a00145.html create mode 100644 doc/api-0.9.3/a00146.html create mode 100644 doc/api-0.9.3/a00147.html create mode 100644 doc/api-0.9.3/a00148.html create mode 100644 doc/api-0.9.3/a00149.html rename doc/{api-0.9.2/a00230.html => api-0.9.3/a00150.html} (52%) rename doc/{api-0.9.2/a00239.html => api-0.9.3/a00151.html} (62%) rename doc/{api-0.9.2/a00248.html => api-0.9.3/a00152.html} (64%) rename doc/{api-0.9.2/a00303.html => api-0.9.3/a00153.html} (80%) create mode 100644 doc/api-0.9.3/a00154.html rename doc/{api-0.9.2/a00235.html => api-0.9.3/a00155.html} (52%) rename doc/{api-0.9.2/a00236.html => api-0.9.3/a00156.html} (72%) rename doc/{api-0.9.2/a00237.html => api-0.9.3/a00157.html} (69%) rename doc/{api-0.9.2/a00240.html => api-0.9.3/a00158.html} (68%) rename doc/{api-0.9.2/a00241.html => api-0.9.3/a00159.html} (63%) rename doc/{api-0.9.2/a00242.html => api-0.9.3/a00160.html} (83%) rename doc/{api-0.9.2/a00243.html => api-0.9.3/a00161.html} (50%) create mode 100644 doc/api-0.9.3/a00162.html rename doc/{api-0.9.2/a00307.html => api-0.9.3/a00163.html} (57%) rename doc/{api-0.9.2/a00245.html => api-0.9.3/a00164.html} (54%) create mode 100644 doc/api-0.9.3/a00165.html create mode 100644 doc/api-0.9.3/a00166.html rename doc/{api-0.9.2/a00246.html => api-0.9.3/a00167.html} (69%) create mode 100644 doc/api-0.9.3/a00168.html rename doc/{api-0.9.2/a00249.html => api-0.9.3/a00169.html} (66%) rename doc/{api-0.9.2/a00250.html => api-0.9.3/a00170.html} (59%) rename doc/{api-0.9.2/a00251.html => api-0.9.3/a00171.html} (72%) create mode 100644 doc/api-0.9.3/a00172.html rename doc/{api-0.9.2/a00253.html => api-0.9.3/a00173.html} (69%) rename doc/{api-0.9.2/a00254.html => api-0.9.3/a00174.html} (68%) rename doc/{api-0.9.2/a00255.html => api-0.9.3/a00175.html} (61%) rename doc/{api-0.9.2/a00256.html => api-0.9.3/a00176.html} (64%) create mode 100644 doc/api-0.9.3/a00177.html rename doc/{api-0.9.2/a00257.html => api-0.9.3/a00178.html} (74%) rename doc/{api-0.9.2/a00258.html => api-0.9.3/a00179.html} (69%) rename doc/{api-0.9.2/a00259.html => api-0.9.3/a00180.html} (73%) rename doc/{api-0.9.2/a00260.html => api-0.9.3/a00181.html} (72%) rename doc/{api-0.9.2/a00261.html => api-0.9.3/a00182.html} (63%) rename doc/{api-0.9.2/a00262.html => api-0.9.3/a00183.html} (67%) rename doc/{api-0.9.2/a00263.html => api-0.9.3/a00184.html} (69%) create mode 100644 doc/api-0.9.3/a00185.html rename doc/{api-0.9.2/a00264.html => api-0.9.3/a00186.html} (75%) rename doc/{api-0.9.2/a00265.html => api-0.9.3/a00187.html} (60%) rename doc/{api-0.9.2/a00266.html => api-0.9.3/a00188.html} (61%) create mode 100644 doc/api-0.9.3/a00189.html rename doc/{api-0.9.2/a00268.html => api-0.9.3/a00190.html} (78%) rename doc/{api-0.9.2/a00269.html => api-0.9.3/a00191.html} (68%) rename doc/{api-0.9.2/a00270.html => api-0.9.3/a00192.html} (64%) rename doc/{api-0.9.2/a00306.html => api-0.9.3/a00193.html} (69%) rename doc/{api-0.9.2/a00271.html => api-0.9.3/a00194.html} (55%) rename doc/{api-0.9.2/a00272.html => api-0.9.3/a00195.html} (66%) rename doc/{api-0.9.2/a00273.html => api-0.9.3/a00196.html} (58%) rename doc/{api-0.9.2/a00274.html => api-0.9.3/a00197.html} (68%) rename doc/{api-0.9.2/a00275.html => api-0.9.3/a00198.html} (72%) create mode 100644 doc/api-0.9.3/a00199.html create mode 100644 doc/api-0.9.3/a00200.html rename doc/{api-0.9.2/a00277.html => api-0.9.3/a00201.html} (71%) rename doc/{api-0.9.2/a00278.html => api-0.9.3/a00202.html} (72%) rename doc/{api-0.9.2/a00279.html => api-0.9.3/a00203.html} (78%) rename doc/{api-0.9.2/a00280.html => api-0.9.3/a00204.html} (82%) rename doc/{api-0.9.2/a00281.html => api-0.9.3/a00205.html} (66%) rename doc/{api-0.9.2/a00282.html => api-0.9.3/a00206.html} (66%) create mode 100644 doc/api-0.9.3/a00207.html rename doc/{api-0.9.2/a00284.html => api-0.9.3/a00208.html} (63%) create mode 100644 doc/api-0.9.3/a00209.html rename doc/{api-0.9.2/a00286.html => api-0.9.3/a00210.html} (69%) rename doc/{api-0.9.2/a00287.html => api-0.9.3/a00211.html} (56%) rename doc/{api-0.9.2/a00288.html => api-0.9.3/a00212.html} (66%) rename doc/{api-0.9.2/a00289.html => api-0.9.3/a00213.html} (68%) rename doc/{api-0.9.2/a00290.html => api-0.9.3/a00214.html} (69%) create mode 100644 doc/api-0.9.3/a00215.html create mode 100644 doc/api-0.9.3/a00216.html rename doc/{api-0.9.2/a00293.html => api-0.9.3/a00217.html} (77%) create mode 100644 doc/api-0.9.3/a00218.html rename doc/{api-0.9.2/a00294.html => api-0.9.3/a00219.html} (68%) rename doc/{api-0.9.2/a00295.html => api-0.9.3/a00220.html} (68%) rename doc/{api-0.9.2/a00296.html => api-0.9.3/a00221.html} (70%) rename doc/{api-0.9.2/a00308.html => api-0.9.3/a00222.html} (69%) create mode 100644 doc/api-0.9.3/a00223.html rename doc/{api-0.9.2/a00298.html => api-0.9.3/a00224.html} (75%) rename doc/{api-0.9.2/a00299.html => api-0.9.3/a00225.html} (71%) rename doc/{api-0.9.2/a00300.html => api-0.9.3/a00226.html} (73%) rename doc/{api-0.9.2/a00301.html => api-0.9.3/a00227.html} (73%) rename doc/{api-0.9.2/a00302.html => api-0.9.3/a00228.html} (68%) rename doc/{api-0.9.2/a00304.html => api-0.9.3/a00229.html} (70%) create mode 100644 doc/api-0.9.3/a00230.html create mode 100644 doc/api-0.9.3/a00232.html create mode 100644 doc/api-0.9.3/a00233.html create mode 100644 doc/api-0.9.3/a00234.html rename doc/{api-0.9.2/a00310.html => api-0.9.3/a00235.html} (75%) rename doc/{api-0.9.2/a00317.html => api-0.9.3/a00236.html} (74%) rename doc/{api-0.9.2/a00312.html => api-0.9.3/a00237.html} (74%) rename doc/{api-0.9.2/a00316.html => api-0.9.3/a00238.html} (74%) rename doc/{api-0.9.2/a00311.html => api-0.9.3/a00239.html} (74%) rename doc/{api-0.9.2/a00315.html => api-0.9.3/a00240.html} (74%) rename doc/{api-0.9.2/a00319.html => api-0.9.3/a00241.html} (74%) rename doc/{api-0.9.2/a00314.html => api-0.9.3/a00242.html} (74%) rename doc/{api-0.9.2/a00318.html => api-0.9.3/a00243.html} (74%) rename doc/{api-0.9.2/a00313.html => api-0.9.3/a00244.html} (74%) rename doc/{api-0.9.2/a00320.html => api-0.9.3/a00245.html} (71%) rename doc/{api-0.9.2/a00321.html => api-0.9.3/a00246.html} (64%) rename doc/{api-0.9.2/a00322.html => api-0.9.3/a00247.html} (63%) rename doc/{api-0.9.2/a00323.html => api-0.9.3/a00248.html} (58%) rename doc/{api-0.9.2 => api-0.9.3}/annotated.html (67%) create mode 100644 doc/api-0.9.3/background2.jpg rename doc/{api-0.9.2 => api-0.9.3}/bc_s.png (100%) create mode 100644 doc/api-0.9.3/classes.html rename doc/{api-0.9.2 => api-0.9.3}/closed.png (100%) rename doc/{api-0.9.2 => api-0.9.3}/doxygen.css (75%) rename doc/{api-0.9.2 => api-0.9.3}/doxygen.png (100%) create mode 100644 doc/api-0.9.3/files.html rename doc/{api-0.9.2 => api-0.9.3}/functions.html (76%) rename doc/{api-0.9.2 => api-0.9.3}/functions_func.html (75%) create mode 100644 doc/api-0.9.3/hierarchy.html rename doc/{api-0.9.2 => api-0.9.3}/index.html (68%) rename doc/{api-0.9.2 => api-0.9.3}/logo-mini.png (100%) create mode 100644 doc/api-0.9.3/modules.html rename doc/{api-0.9.2 => api-0.9.3}/nav_f.png (100%) rename doc/{api-0.9.2 => api-0.9.3}/nav_h.png (100%) rename doc/{api-0.9.2 => api-0.9.3}/open.png (100%) rename doc/{api-0.9.2/a00054_source.html => api-0.9.3/pages.html} (61%) rename doc/{api-0.9.2 => api-0.9.3}/tab_a.png (100%) rename doc/{api-0.9.2 => api-0.9.3}/tab_b.png (100%) rename doc/{api-0.9.2 => api-0.9.3}/tab_h.png (100%) rename doc/{api-0.9.2 => api-0.9.3}/tab_s.png (100%) rename doc/{api-0.9.2 => api-0.9.3}/tabs.css (100%) delete mode 100644 doc/glm-0.9.2.pdf create mode 100644 doc/glm-0.9.3.pdf diff --git a/doc/api-0.9.2/a00001.html b/doc/api-0.9.2/a00001.html deleted file mode 100644 index d8fed4de..00000000 --- a/doc/api-0.9.2/a00001.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - -Getting Started - - - - - -
-
- - - - - - -
-
- - -
-
-
-
Getting Started
-
-
-

-Compiler Setup

-

GLM is a header only library, there is nothing to build to use it which increases its cross platform capabilities.

-

To use GLM, a programmer only has to include <glm/glm.hpp>. This provides all the GLSL features implemented by GLM.

-

GLM makes heavy usages of C++ templates. This design may significantly increase the compile time for files that use GLM. Precompiled headers are recommended to avoid this issue.

-

-Use Sample of GLM

-
#include <glm/glm.hpp>
-
-int foo()
-{
-        glm::vec4 Position = glm::vec4(glm::vec3(0.0), 1.0);
-        glm::mat4 Model = glm::mat4(1.0);
-        Model[4] = glm::vec4(1.0, 1.0, 0.0, 1.0);
-        glm::vec4 Transformed = Model * Position;
-        return 0;
-}
-

-Library Structure

-

GLM is arranged in 2 distinct segments. These are the GLM features based on the GLSL specification and a set of extensions. Some extensions are stable and backward compatible (GTC Extensions (Stable) GTC VIRTREV Extensions VIRTREV) but some are experimental (GTX Extensions (Experimental) GTX) which means that they are not guarantee to be backward compatible from version to version.

-

The GLM represents only what GLSL's core provides in terms of types and functions (to the best of GLM's ability to replicate them). All that is needed to use the core is to include <glm/glm.hpp>.

-

GTC extensions are functions and types that add onto the core. These are considered reasonably stable, with their APIs not changing much between versions. Each core extension is included with a separated header file include. All of the core extensions are in the "glm/gtc" directory.

-

GTX extensions are functions and types that add onto the core. Unlike GTC extensions, their APIs are not considered particularly stable, which is why they are marked "experimental". Like GTC extensions, each experimental extension is included with a separate header file.

-

All the extensions can be included at once by default by including <glm/ext.hpp> but this is not recommanded as it will reduce compilation speed for many unused features.

-

All of GLM is defined as direct children of the glm namespace, including extensions.

-

To use a particular extension, simply include the extension header file. All extension features are added to the glm namespace automatically.

-
#include <glm/glm.hpp>
-#include <glm/gtc/matrix_transform.hpp>
- 
-int foo()
-{
-        glm::vec4 Position = glm::vec4(glm::vec3(0.0f), 1.0f);
-        glm::mat4 Model = glm::translate(
-                glm::mat4(1.0f), glm::vec3(1.0f));
-        glm::vec4 Transformed = Model * Position;
-        return 0;
-}
-

-Dependencies

-

When <glm/glm.hpp> is included, GLM provides all the GLSL features it implements in C++.

-

When an extension is included, all the dependent extensions will be included as well. All the extensions depend on GLM core. (<glm/glm.hpp>)

-

There is no dependence with external libraries or external headers like gl.h, gl3.h, glu.h or windows.h. However, if <boost/static_assert.hpp> is included, Boost static assert will be used throughout GLM code to provide compiled time errors.

-

-OpenGL Interoperability

-

It is often useful to get a vector type as an array of its base type. For example, the OpenGL function glUniform3fv() takes an array instead of 3 individual values. If the vector and matrix types were simple arrays, then one could pass them to the function like so: glUniform3fv(loc, 1, glm::vec3(0)). However, this is not the case; the vector and matrix types are C++ classes, not arrays.

-

Instead, GLM provides a mechanism to get the content of a vector or matrix as an array pointer. The GLM_GTC_type_ptr: Memory layout access. extension provides this ability.

-
#include <glm/glm.hpp>
-#include <glm/gtc/type_ptr.hpp>
- 
-void BindUniforms(GLuint uniVec, GLuint uniMat)
-{
-        glm::vec4 v(0.0f);
-        glm::mat4 m(1.0f);
-        ...
-        glUniform3fv(uniVec, 1, glm::value_ptr(v));
-        glUniformMatrix4fv(uniMat, 1, GL_FALSE, glm::value_ptr(m));
-}
-

Notice that all matrix types are column-major rather than row-major. Hence the need to pass GL_FALSE to glUniformMatrix4fv.

-

Alternatively, the first element of the type can be dereferenced.

-
#include <glm/glm.hpp>
- 
-void BindUniforms(GLuint uniVec, GLuint uniMat)
-{
-        glm::vec4 v(0.0f);
-        glm::mat4 m(1.0f);
-        ...
-        glUniform3fv(uniVec, 1, glm::value_ptr(&v[0]));
-        glUniformMatrix4fv(uniMat, 1, GL_FALSE, &m[0][0]);
-}
-

This method requires dereferencing the very first basic type of the object, not merely the first element. The [] operator on the matrix type returns a column vector; one must then access the first element of that column vector to get a pointer to the basic type.

-
Note:
This operation could have been built into the base vector and matrix types and performed with a cast operator. However, this has some downsides. Implicit casts can cause unexpected and unwanted behavior.
-

-GLM for CUDA

-

GLM 0.9.2 introduces CUDA compiler support allowing programmer to use GLM inside a CUDA Kernel. To make GLM compatible with CUDA, GLM_FORCE_CUDA requires to be define before any inclusion of <glm/glm.hpp>.

-
#define GLM_FORCE_CUDA
-#include <glm/glm.hpp>
-
- - - diff --git a/doc/api-0.9.2/a00002.html b/doc/api-0.9.2/a00002.html deleted file mode 100644 index d5f56d93..00000000 --- a/doc/api-0.9.2/a00002.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - -Advanced Usage - - - - - -
-
- - - - - - -
-
- - -
-
-
-
Advanced Usage
-
-
-

-Swizzle Operators

-

A common feature of shader languages like GLSL is components swizzling. This involves being able to select which components of a vector are used and in what order. For example, "variable.x", "variable.xxy", "variable.zxyy" are examples of swizzling.

-
vec4 A;
-vec2 B;
-...
-B.yx = A.wy;
-B = A.xx;
-

This functionally turns out to be really complicated to implement in C++ using the exact GLSL conventions. GLM provides 2 implementions this feature.

-

-Macro implementation

-

The first implementation follows the GLSL convensions accurately. It uses macros to achieve this, which might generates name conflicts with system headers or third party libraries. Therefore, it is disabled by default. To enable this implementation, GLM_SWIZZLE must be defined before any inclusion of <glm/glm.hpp>.

-
#define GLM_SWIZZLE 
-#include <glm/glm.hpp>
-

This implementation can be partially enabled by defining GLM_SWIZZLE_XYZW, GLM_SWIZZLE_RGBA or GLM_SWIZZLE_STQP. Each macro only enable a set of swizzling operators. For example we can only enable x,y,z,w and s,t,q,p operators using:

-
#define GLM_SWIZZLE_XYZW 
-#define GLM_SWIZZLE_STQP
-#include <glm/glm.hpp>
-

-Extension implementation

-

A safer way to do swizzling is to use the <glm/gtc/swizzle.hpp> extension. This extension provides the GLSL functionality, but uses a different syntax for it. Moreover, the swizzle extension also provides dynamic swizzling.

-

Static swizzling is resovled at compile-time. The swizzle mask ".xzyy" is as fixed as the type of a particular variable. Dynamic swizzling is resolved at runtime via function calls. Dynamic swizzling is more flexible, since one can choose the swizzle mask at runtime, but it runs slower. This performance issue is enhanced when SIMD instructions are used.

-
#include <glm/glm.hpp>
-#include <glm/gtc/swizzle.hpp>
- 
-void foo()
-{
-        glm::vec4 ColorRGBA(1.0f, 0.5f, 0.0f, 1.0f);
-        ...
-        // Dynamic swizzling (at run time, more flexible)
-        // l-value:
-        glm::vec4 ColorBGRA1 = 
-        glm::swizzle(ColorRGBA, glm::B, glm::G, glm::R, glm::A);
-        // r-value:
-        glm::swizzle(ColorRGBA, glm::B, glm::G, glm::R, glm::A) = ColorRGBA;
-         
-        // Static swizzling (at build time, faster)
-        // l-value:
-        glm::vec4 ColorBGRA2 = 
-        glm::swizzle<glm::B, glm::G, glm::R, glm::A>(ColorRGBA);
-        // r-value:
-        glm::swizzle<glm::B, glm::G, glm::R, glm::A>(ColorRGBA) = ColorRGBA;
-}
-

-Notification System

-

GLM includes a notification system which can display some information at build time:

-
    -
  • Compiler
  • -
  • Build model: 32bits or 64 bits
  • -
  • C++ version
  • -
  • Architecture: x86, SSE, AVX, etc.
  • -
  • Included extensions
  • -
  • etc.
  • -
-

This system is disable by default. To enable this system, define GLM_MESSAGES before any inclusion of <glm/glm.hpp>.

-
#define GLM_MESSAGES
-#include <glm/glm.hpp>
-

-Force Inline

-

GLM's functions are defined in headers, so they are defined with C++'s "inline" delcaration. This does not require the compiler to inline them, however. To force the compiler to inline the function, using whatever capabilities that the compiler provides to do so, GLM_FORCE_INLINE can be defined before any inclusion of <glm/glm.hpp>.

-
#define GLM_FORCE_INLINE 
-#include <glm/glm.hpp>
-

-SIMD support

-

GLM provides some SIMD optimizations based on compiler intrinsics. These optimizations will be automatically utilized based on the build environment. These optimizations are mainly available through the extensions GLM_GTX_simd_vec4: SIMD vec4 type and functions and GLM_GTX_simd_mat4: SIMD mat4 type and functions.

-

A programmer can restrict or force instruction sets used for these optimizations using GLM_FORCE_SSE2 or GLM_FORCE_AVX.

-

A programmer can discard the use of intrinsics by defining GLM_FORCE_PURE before any inclusion of <glm/glm.hpp>. If GLM_FORCE_PURE is defined, then including a SIMD extension will generate a build error.

-
#define GLM_FORCE_PURE
-#include <glm/glm.hpp>
-

-Compatibility

-

Compilers have some language extensions that GLM will automatically take advantage of them when they are enabled. GLM_FORCE_CXX98 can switch off these extensions, forcing GLM to operate on pure C++98.

-
#define GLM_FORCE_CXX98 
-#include <glm/glm.hpp>
-
- - - diff --git a/doc/api-0.9.2/a00003.html b/doc/api-0.9.2/a00003.html deleted file mode 100644 index a6d0b5b9..00000000 --- a/doc/api-0.9.2/a00003.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -Deprecated function replacements - - - - - -
-
- - - - - - -
-
- - -
-
-
-
Deprecated function replacements
-
-
-

The OpenGL 3.0 specification deprecated some features, and most of these have been removed from the OpenGL 3.1 specfication and beyond. GLM provides some replacement functions. Many of these functions come from the GLM_GTC_matrix_transform: Matrix transform functions. extension.

-

-OpenGL function replacements

-
-
glRotate[fd]
-
glm::rotate
-
glScale[fd]
-
glm::scale
-
glTranslate[fd]
-
glm::translate
-
glLoadIdentity
-
The default constructor of all matrix types creates an identity matrix.
-
glMultMatrix[fd]
-
Per the GLSL specification, the multiplication operator is overloaded for all matrix types. Multiplying two matrices together will perform matrix multiplication.
-
glLoadTransposeMatrix[fd]
-
glm::transpose
-
glMultTransposeMatrix
-
Combine the last two.
-
glFrustum
-
glm::frustum
-
glOrtho
-
glm::ortho
-
gluLookAt
-
glm::lookAt
-
-

-GLU function replacements

-
-
gluOrtho2D
-
glm::ortho
-
gluPerspective
-
glm::perspective
-
gluProject
-
glm::project
-
gluUnProject
-
glm::unProject
-
-
- - - diff --git a/doc/api-0.9.2/a00005.html b/doc/api-0.9.2/a00005.html deleted file mode 100644 index 8767e687..00000000 --- a/doc/api-0.9.2/a00005.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -FAQ - - - - - -
-
- - - - - - -
-
- - -
-
-
-
FAQ
-
-
-

-Why does GLM follow GLSL specification and conventions?

-

Following GLSL conventions is a really strict policy of GLM. GLM has been designed according to the idea that everyone writes their own math library with their own conventions. The idea is that brilliant developers (the OpenGL ARB) worked together and agreed to make GLSL. Following GLSL conventions is a way to find consensus. Moreover, basically when a developer knows GLSL, he knows GLM.

-

-Does GLM run GLSL programs?

-

No, GLM is a C++ implementation of a subset of GLSL.

-

-Does a GLSL compiler build GLM codes?

-

No, this is not what GLM intends to do!

-

-Should I use GTX extensions?

-

GTX Extensions (Experimental) are experimental. In GLM this means that these extensions might change from version to version without restriction. In practice, it doesn't really change except time to time. GTC extensions are stabled, tested and perfectly reliable in time. Many GTX extensions extend GTC extensions and provide a way to explore features and implementations before becoming stable by a promotion as GTC extensions. This is similar to how OpenGL extensions can be EXT or ARB extensions before becoming core functionality.

-

In short, if you use a GTX extension, the API is much more likely to change from version to version than if you don't. But you should not feel too uncomfortable about using them.

-

-Where can I ask my questions?

-

A good place is the OpenGL Toolkits forum on OpenGL.org: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1

-

-Where can I find the documentation of extensions?

-

The Doxygen generated documentation includes a complete list of all extensions available. Explore this documentation to get a complete view of all GLM capabilities! http://glm.g-truc.net/html/index.html

-

-Should I use 'using namespace glm;'?

-

This is unwise. Chances are that if 'using namespace glm;' is called, name collisions will happen. GLSL names for functions are fairly generic, so it is entirely likely that there is another function called, for example, sqrt .

-

For frequent use of particular types, they can be brough into the global namespace with a 'using' declaration like this:

-

/code using glm::mat4;

-

mat4 someVariable(3.0f); /endcode

-

-Is GLM fast?

-

GLM is mainly designed to be convenient; that's why it is written against GLSL specification.

-

The 80-20 rule suggests that 80% of a program's performance comes from 20% of its code. Therefore, one should first identify which 20% of the code is impacting the performance.

-

In general, if one identifies certain math code to be a performance bottleneck, the only way to solve this is to write specialized code for those particular math needs. So no canned library solution would be suitable.

-

That being said, GLM can provides some descent performances alternatives based on approximations or SIMD instructions.

-
- - - diff --git a/doc/api-0.9.2/a00006.html b/doc/api-0.9.2/a00006.html deleted file mode 100644 index be6000a0..00000000 --- a/doc/api-0.9.2/a00006.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -Code Samples - - - - - -
-
- - - - - - -
-
- - -
-
-
-
Code Samples
-
-
-

This series of samples only shows various GLM functionality.

-

-Compute a Triangle's Normal

-
#include <glm/glm.hpp> // vec3 normalize cross
- 
-glm::vec3 computeNormal(
-glm::vec3 const & a, 
-glm::vec3 const & b,
-glm::vec3 const & c)
-{
-        return glm::normalize(glm::cross(c - a, b - a));
-}
-

A potentially faster, but less accurate alternative:

-
#include <glm/glm.hpp> // vec3 cross
-#include <glm/gtx/fast_square_root.hpp> // fastNormalize
- 
-glm::vec3 computeNormal(
-        glm::vec3 const & a, 
-        glm::vec3 const & b,
-        glm::vec3 const & c)
-{
-        return glm::fastNormalize(glm::cross(c - a, b - a));
-}
-

-Matrix Transform

-
#include <glm/glm.hpp> //vec3, vec4, ivec4, mat4
-#include <glm/gtc/matrix_transform.hpp> //translate, rotate, scale, perspective 
-#include <glm/gtc/type_ptr.hpp> //value_ptr
- 
-void setUniformMVP(
-                GLuint Location, 
-                glm::vec3 const & Translate, 
-                glm::vec3 const & Rotate)
-{
-        glm::mat4 Projection =
-        glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f);
-        glm::mat4 ViewTranslate = glm::translate(
-        glm::mat4(1.0f),
-        Translate);
-        glm::mat4 ViewRotateX = glm::rotate(
-        ViewTranslate,
-        Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f));
-        glm::mat4 View = glm::rotate(
-        ViewRotateX,
-        Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f));
-        glm::mat4 Model = glm::scale(
-        glm::mat4(1.0f),
-        glm::vec3(0.5f));
-        glm::mat4 MVP = Projection * View * Model;
-        glUniformMatrix4fv(
-        Location, 1, GL_FALSE, glm::value_ptr(MVP));
-}
-

-Vector Types

-
#include <glm/glm.hpp> //vec2
-#include <glm/gtc/type_precision.hpp> //hvec2, i8vec2, i32vec2
-std::size_t const VertexCount = 4;
- 
-// Float quad geometry
-std::size_t const PositionSizeF32 = VertexCount * sizeof(glm::vec2);
-glm::vec2 const PositionDataF32[VertexCount] =
-{
-        glm::vec2(-1.0f,-1.0f),
-        glm::vec2( 1.0f,-1.0f),
-        glm::vec2( 1.0f, 1.0f),
-        glm::vec2(-1.0f, 1.0f)
-};
-
-// Half-float quad geometry
-std::size_t const PositionSizeF16 = VertexCount * sizeof(glm::hvec2);
-glm::hvec2 const PositionDataF16[VertexCount] =
-{
-        glm::hvec2(-1.0f, -1.0f),
-        glm::hvec2( 1.0f, -1.0f),
-        glm::hvec2( 1.0f, 1.0f),
-        glm::hvec2(-1.0f, 1.0f)
-};
-
-// 8 bits signed integer quad geometry
-std::size_t const PositionSizeI8 = VertexCount * sizeof(glm::i8vec2);
-glm::i8vec2 const PositionDataI8[VertexCount] =
-{
-        glm::i8vec2(-1,-1),
-        glm::i8vec2( 1,-1),
-        glm::i8vec2( 1, 1),
-        glm::i8vec2(-1, 1)
-};
-
-// 32 bits signed integer quad geometry
-std::size_t const PositionSizeI32 = VertexCount * sizeof(glm::i32vec2);
-glm::i32vec2 const PositionDataI32[VertexCount] =
-{
-        glm::i32vec2 (-1,-1),
-        glm::i32vec2 ( 1,-1),
-        glm::i32vec2 ( 1, 1),
-        glm::i32vec2 (-1, 1)
-};
-

-Lighting

-
#include <glm/glm.hpp> // vec3 normalize reflect dot pow
-#include <glm/gtx/random.hpp> // vecRand3
- 
-// vecRand3, generate a random and equiprobable normalized vec3
- 
-glm::vec3 lighting(
-        intersection const & Intersection,
-        material const & Material,
-        light const & Light,
-        glm::vec3 const & View)
-{
-        glm::vec3 Color = glm::vec3(0.0f);
-        glm::vec3 LightVertor = glm::normalize(
-        Light.position() - Intersection.globalPosition() +
-        glm::vecRand3(0.0f, Light.inaccuracy());
-        
-        if(!shadow(
-                Intersection.globalPosition(),
-                Light.position(),
-                LightVertor))
-        {
-                float Diffuse = glm::dot(Intersection.normal(), LightVector);
-                if(Diffuse <= 0.0f)
-                return Color;
-                if(Material.isDiffuse())
-                Color += Light.color() * Material.diffuse() * Diffuse;
-                
-        if(Material.isSpecular())
-        {
-                glm::vec3 Reflect = glm::reflect(
-                -LightVector,
-                Intersection.normal());
-                float Dot = glm::dot(Reflect, View);
-                float Base = Dot > 0.0f ? Dot : 0.0f;
-                float Specular = glm::pow(Base, Material.exponent());
-                Color += Material.specular() * Specular;
-        }
-        return Color;
-}
-
- - - diff --git a/doc/api-0.9.2/a00007.html b/doc/api-0.9.2/a00007.html deleted file mode 100644 index 058b1c4c..00000000 --- a/doc/api-0.9.2/a00007.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - -Known Issues - - - - - -
-
- - - - - - -
-
- - -
-
-
-
Known Issues
-
-
-

-not Function

-

The GLSL keyword not is also a keyword in C++. To prevent name collisions, the GLSL not function has been implemented with the name not_.

-

-Half Based Types

-

GLM supports half float number types through the extension GLM_GTC_half_float. This extension provides the types half, hvec*, hmat*x* and hquat*.

-

Unfortunately, C++ 98 specification doesn’t support anonymous unions which limit hvec* vector components access to x, y, z and w.

-

However, Visual C++ does support anonymous unions if the language extensions are enabled (/Za to disable them). In this case GLM will automatically enables the support of all component names (x,y,z,w ; r,g,b,a ; s,t,p,q).

-

To uniformalize the component access across types, GLM provides the define GLM_FORCE_ONLY_XYZW which will generates errors if component accesses are done using r,g,b,a or s,t,p,q.

-
#define GLM_FORCE_ONLY_XYZW 
-#include <glm/glm.hpp>
-
- - - diff --git a/doc/api-0.9.2/a00008.html b/doc/api-0.9.2/a00008.html deleted file mode 100644 index 78e92249..00000000 --- a/doc/api-0.9.2/a00008.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - -References - - - - - -
-
- - - - - - -
-
- - -
-
-
-
References
-
-
-
- - - diff --git a/doc/api-0.9.2/a00023_source.html b/doc/api-0.9.2/a00023_source.html deleted file mode 100644 index 80f04c95..00000000 --- a/doc/api-0.9.2/a00023_source.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - -_detail.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
_detail.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-07-24
-00005 // Updated : 2008-08-31
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/_detail.hpp
-00009 
-00010 #ifndef glm_core_detail
-00011 #define glm_core_detail
-00012 
-00013 #include "setup.hpp"
-00014 #include <cassert>
-00015 
-00016 namespace glm{
-00017 namespace detail
-00018 {
-00019         class thalf;
-00020 
-00021 #if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available
-00022         typedef int64_t                                                         sint64;
-00023         typedef uint64_t                                                        uint64;
-00024 #elif(GLM_COMPILER & GLM_COMPILER_VC)
-00025         typedef signed __int64                                          sint64;
-00026         typedef unsigned __int64                                        uint64;
-00027 #elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC | GLM_COMPILER_CLANG))
-00028         __extension__ typedef signed long long          sint64;
-00029         __extension__ typedef unsigned long long        uint64;
-00030 #elif(GLM_COMPILER & GLM_COMPILER_BC)
-00031         typedef Int64                                                           sint64;
-00032         typedef Uint64                                                          uint64;
-00033 #else//unknown compiler
-00034         typedef signed long     long                                    sint64;
-00035         typedef unsigned long long                                      uint64;
-00036 #endif//GLM_COMPILER
-00037 
-00038         template<bool C>
-00039         struct If
-00040         {
-00041                 template<typename F, typename T>
-00042                 static GLM_FUNC_QUALIFIER T apply(F functor, const T& val)
-00043                 {
-00044                         return functor(val);
-00045                 }
-00046         };
-00047 
-00048         template<>
-00049         struct If<false>
-00050         {
-00051                 template<typename F, typename T>
-00052                 static GLM_FUNC_QUALIFIER T apply(F, const T& val)
-00053                 {
-00054                         return val;
-00055                 }
-00056         };
-00057 
-00058         //template <typename T>
-00059         //struct traits
-00060         //{
-00061         //      static const bool is_signed = false;
-00062         //      static const bool is_float = false;
-00063         //      static const bool is_vector = false;
-00064         //      static const bool is_matrix = false;
-00065         //      static const bool is_genType = false;
-00066         //      static const bool is_genIType = false;
-00067         //      static const bool is_genUType = false;
-00068         //};
-00069 
-00070         //template <>
-00071         //struct traits<half>
-00072         //{
-00073         //      static const bool is_float = true;
-00074         //      static const bool is_genType = true;
-00075         //};
-00076 
-00077         //template <>
-00078         //struct traits<float>
-00079         //{
-00080         //      static const bool is_float = true;
-00081         //      static const bool is_genType = true;
-00082         //};
-00083 
-00084         //template <>
-00085         //struct traits<double>
-00086         //{
-00087         //      static const bool is_float = true;
-00088         //      static const bool is_genType = true;
-00089         //};
-00090 
-00091         //template <typename genType>
-00092         //struct desc
-00093         //{
-00094         //      typedef genType                                                 type;
-00095         //      typedef genType *                                               pointer;
-00096         //      typedef genType const*                                  const_pointer;
-00097         //      typedef genType const *const                    const_pointer_const;
-00098         //      typedef genType *const                                  pointer_const;
-00099         //      typedef genType &                                               reference;
-00100         //      typedef genType const&                                  const_reference;
-00101         //      typedef genType const&                                  param_type;
-00102 
-00103         //      typedef typename genType::value_type    value_type;
-00104         //      typedef typename genType::size_type             size_type;
-00105         //      static const typename size_type                 value_size;
-00106         //};
-00107 
-00108         //template <typename genType>
-00109         //const typename desc<genType>::size_type desc<genType>::value_size = genType::value_size();
-00110 
-00111         union uif32
-00112         {
-00113                 GLM_FUNC_QUALIFIER uif32() :
-00114                         i(0)
-00115                 {}
-00116 
-00117                 GLM_FUNC_QUALIFIER uif32(float f) :
-00118                         f(f)
-00119                 {}
-00120 
-00121                 GLM_FUNC_QUALIFIER uif32(unsigned int i) :
-00122                         i(i)
-00123                 {}
-00124 
-00125                 float f;
-00126                 unsigned int i;
-00127         };
-00128 
-00129         union uif64
-00130         {
-00131                 GLM_FUNC_QUALIFIER uif64() :
-00132                         i(0)
-00133                 {}
-00134 
-00135                 GLM_FUNC_QUALIFIER uif64(double f) :
-00136                         f(f)
-00137                 {}
-00138 
-00139                 GLM_FUNC_QUALIFIER uif64(uint64 i) :
-00140                         i(i)
-00141                 {}
-00142 
-00143                 double f;
-00144                 uint64 i;
-00145         };
-00146 
-00147         typedef uif32 uif;
-00148 
-00150         // int
-00151 
-00152         template <typename T>
-00153         struct is_int
-00154         {
-00155                 enum is_int_enum
-00156                 {
-00157                         _YES = 0,
-00158                         _NO = 1
-00159                 };
-00160         };
-00161 
-00162 #define GLM_DETAIL_IS_INT(T)    \
-00163         template <>                                     \
-00164         struct is_int<T>                        \
-00165         {                                                       \
-00166                 enum is_int_enum                \
-00167                 {                                               \
-00168                         _YES = 1,                       \
-00169                         _NO = 0                         \
-00170                 };                                              \
-00171         }
-00172 
-00174         // uint
-00175 
-00176         template <typename T>
-00177         struct is_uint
-00178         {
-00179                 enum is_uint_enum
-00180                 {
-00181                         _YES = 0,
-00182                         _NO = 1
-00183                 };
-00184         };
-00185 
-00186 #define GLM_DETAIL_IS_UINT(T)   \
-00187         template <>                                     \
-00188         struct is_uint<T>                       \
-00189         {                                                       \
-00190                 enum is_uint_enum               \
-00191                 {                                               \
-00192                         _YES = 1,                       \
-00193                         _NO = 0                         \
-00194                 };                                              \
-00195         }
-00196 
-00197         //GLM_DETAIL_IS_UINT(unsigned long long)
-00198 
-00200         // float
-00201 
-00202         template <typename T>
-00203         struct is_float
-00204         {
-00205                 enum is_float_enum
-00206                 {
-00207                         _YES = 0,
-00208                         _NO = 1
-00209                 };
-00210         };
-00211 
-00212 #define GLM_DETAIL_IS_FLOAT(T)  \
-00213         template <>                                     \
-00214         struct is_float<T>                      \
-00215         {                                                       \
-00216                 enum is_float_enum              \
-00217                 {                                               \
-00218                         _YES = 1,                       \
-00219                         _NO = 0                         \
-00220                 };                                              \
-00221         }
-00222 
-00224         // bool
-00225 
-00226         template <typename T>
-00227         struct is_bool
-00228         {
-00229                 enum is_bool_enum
-00230                 {
-00231                         _YES = 0,
-00232                         _NO = 1
-00233                 };
-00234         };
-00235         
-00236         template <>
-00237         struct is_bool<bool>
-00238         {
-00239                 enum is_bool_enum
-00240                 {
-00241                         _YES = 1,
-00242                         _NO = 0
-00243                 };
-00244         };
-00245         
-00247         // vector
-00248 
-00249         template <typename T>
-00250         struct is_vector
-00251         {
-00252                 enum is_vector_enum
-00253                 {
-00254                         _YES = 0,
-00255                         _NO = 1
-00256                 };
-00257         };
-00258 
-00259 #       define GLM_DETAIL_IS_VECTOR(TYPE) \
-00260                 template <typename T> \
-00261                 struct is_vector<TYPE<T> > \
-00262                 { \
-00263                         enum is_vector_enum \
-00264                         { \
-00265                                 _YES = 1, \
-00266                                 _NO = 0 \
-00267                         }; \
-00268                 }
-00269 
-00271         // matrix
-00272 
-00273         template <typename T>
-00274         struct is_matrix
-00275         {
-00276                 enum is_matrix_enum
-00277                 {
-00278                         _YES = 0,
-00279                         _NO = 1
-00280                 };
-00281         };
-00282 
-00283 #define GLM_DETAIL_IS_MATRIX(T) \
-00284         template <>                                     \
-00285         struct is_matrix                        \
-00286         {                                                       \
-00287                 enum is_matrix_enum             \
-00288                 {                                               \
-00289                         _YES = 1,                       \
-00290                         _NO = 0                         \
-00291                 };                                              \
-00292         }
-00293 
-00295         // type
-00296 
-00297         template <typename T>
-00298         struct type
-00299         {
-00300                 enum type_enum
-00301                 {
-00302                         is_float = is_float<T>::_YES,
-00303                         is_int = is_int<T>::_YES,
-00304                         is_uint = is_uint<T>::_YES,
-00305                         is_bool = is_bool<T>::_YES
-00306                 };
-00307         };
-00308 
-00310         // type
-00311 
-00312         typedef signed char                                                     int8;
-00313         typedef signed short                                            int16;
-00314         typedef signed int                                                      int32;
-00315         typedef detail::sint64                                          int64;
-00316 
-00317         typedef unsigned char                                           uint8;
-00318         typedef unsigned short                                          uint16;
-00319         typedef unsigned int                                            uint32;
-00320         typedef detail::uint64                                          uint64;
-00321 
-00322         typedef detail::thalf                                           float16;
-00323         typedef float                                                           float32;
-00324         typedef double                                                          float64;
-00325 
-00326 }//namespace detail
-00327 }//namespace glm
-00328 
-00329 #if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005))
-00330 #       define GLM_DEPRECATED __declspec(deprecated)
-00331 #       define GLM_ALIGN(x) __declspec(align(x)) 
-00332 #       define GLM_ALIGNED_STRUCT(x) __declspec(align(x)) struct 
-00333 #       define GLM_RESTRICT __declspec(restrict)
-00334 #       define GLM_RESTRICT_VAR __restrict
-00335 #elif((GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC)) && (GLM_COMPILER >= GLM_COMPILER_GCC31))
-00336 #       define GLM_DEPRECATED __attribute__((__deprecated__))
-00337 #       define GLM_ALIGN(x) __attribute__((aligned(x)))
-00338 #       define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x)))
-00339 #       if(GLM_COMPILER >= GLM_COMPILER_GCC33)
-00340 #               define GLM_RESTRICT __restrict__
-00341 #               define GLM_RESTRICT_VAR __restrict__
-00342 #       else
-00343 #               define GLM_RESTRICT
-00344 #               define GLM_RESTRICT_VAR
-00345 #       endif
-00346 #       define GLM_RESTRICT __restrict__
-00347 #       define GLM_RESTRICT_VAR __restrict__
-00348 #else
-00349 #       define GLM_DEPRECATED
-00350 #       define GLM_ALIGN
-00351 #       define GLM_ALIGNED_STRUCT(x) 
-00352 #       define GLM_RESTRICT
-00353 #       define GLM_RESTRICT_VAR
-00354 #endif//GLM_COMPILER
-00355 
-00356 #endif//glm_core_detail
-
-
- - - diff --git a/doc/api-0.9.2/a00024_source.html b/doc/api-0.9.2/a00024_source.html deleted file mode 100644 index 15da4f11..00000000 --- a/doc/api-0.9.2/a00024_source.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - -_fixes.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
_fixes.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2011-02-21
-00005 // Updated : 2011-02-21
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/_fixes.hpp
-00009 
-00011 #ifdef max
-00012 #undef max
-00013 #endif
-00014 
-00016 #ifdef min
-00017 #undef min
-00018 #endif
-
-
- - - diff --git a/doc/api-0.9.2/a00025_source.html b/doc/api-0.9.2/a00025_source.html deleted file mode 100644 index 8cfe83d9..00000000 --- a/doc/api-0.9.2/a00025_source.html +++ /dev/null @@ -1,1129 +0,0 @@ - - - - -_swizzle.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
_swizzle.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-04-20
-00005 // Updated : 2008-08-22
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/_swizzle.hpp
-00009 
-00010 #ifndef glm_core_swizzle
-00011 #define glm_core_swizzle
-00012 
-00013 namespace glm
-00014 {
-00015         enum comp
-00016         {
-00017                 X = 0,
-00018                 R = 0,
-00019                 S = 0,
-00020                 Y = 1,
-00021                 G = 1,
-00022                 T = 1,
-00023                 Z = 2,
-00024                 B = 2,
-00025                 P = 2,
-00026                 W = 3,
-00027                 A = 3,
-00028                 Q = 3
-00029         };
-00030 }//namespace glm
-00031 
-00032 #if(defined(GLM_SWIZZLE_XYZW) || defined(GLM_SWIZZLE))
-00033 
-00034 #define xx swizzle(glm::X, glm::X)
-00035 #define yx swizzle(glm::Y, glm::X)
-00036 #define zx swizzle(glm::Z, glm::X)
-00037 #define wx swizzle(glm::W, glm::X)
-00038 #define xy swizzle(glm::X, glm::Y)
-00039 #define yy swizzle(glm::Y, glm::Y)
-00040 #define zy swizzle(glm::Z, glm::Y)
-00041 #define wy swizzle(glm::W, glm::Y)
-00042 #define xz swizzle(glm::X, glm::Z)
-00043 #define yz swizzle(glm::Y, glm::Z)
-00044 #define zz swizzle(glm::Z, glm::Z)
-00045 #define wz swizzle(glm::W, glm::Z)
-00046 #define xw swizzle(glm::X, glm::W)
-00047 #define yw swizzle(glm::Y, glm::W)
-00048 #define zw swizzle(glm::Z, glm::W)
-00049 #define ww swizzle(glm::W, glm::W)
-00050 
-00051 #endif
-00052 
-00053 #if(defined(GLM_SWIZZLE_RGBA) || defined(GLM_SWIZZLE))
-00054 
-00055 #define rr swizzle(glm::X, glm::X)
-00056 #define gr swizzle(glm::Y, glm::X)
-00057 #define br swizzle(glm::Z, glm::X)
-00058 #define ar swizzle(glm::W, glm::X)
-00059 #define rg swizzle(glm::X, glm::Y)
-00060 #define gg swizzle(glm::Y, glm::Y)
-00061 #define bg swizzle(glm::Z, glm::Y)
-00062 #define ag swizzle(glm::W, glm::Y)
-00063 #define rb swizzle(glm::X, glm::Z)
-00064 #define gb swizzle(glm::Y, glm::Z)
-00065 #define bb swizzle(glm::Z, glm::Z)
-00066 #define ab swizzle(glm::W, glm::Z)
-00067 #define ra swizzle(glm::X, glm::W)
-00068 #define ga swizzle(glm::Y, glm::W)
-00069 #define ba swizzle(glm::Z, glm::W)
-00070 #define aa swizzle(glm::W, glm::W)
-00071 
-00072 #endif
-00073 
-00074 #if(defined(GLM_FORCE_SWIZZLE_STPQ) || defined(GLM_SWIZZLE))
-00075 
-00076 #define ss swizzle(glm::X, glm::X)
-00077 #define ts swizzle(glm::Y, glm::X)
-00078 #define ps swizzle(glm::Z, glm::X)
-00079 #define qs swizzle(glm::W, glm::X)
-00080 #define st swizzle(glm::X, glm::Y)
-00081 #define tt swizzle(glm::Y, glm::Y)
-00082 #define pt swizzle(glm::Z, glm::Y)
-00083 #define qt swizzle(glm::W, glm::Y)
-00084 #define sp swizzle(glm::X, glm::Z)
-00085 #define tp swizzle(glm::Y, glm::Z)
-00086 #define pp swizzle(glm::Z, glm::Z)
-00087 #define qp swizzle(glm::W, glm::Z)
-00088 #define sq swizzle(glm::X, glm::W)
-00089 #define tq swizzle(glm::Y, glm::W)
-00090 #define pq swizzle(glm::Z, glm::W)
-00091 #define qq swizzle(glm::W, glm::W)
-00092 
-00093 #endif
-00094 
-00095 #if(defined(GLM_SWIZZLE_XYZW) || defined(GLM_SWIZZLE))
-00096 
-00097 #define xxx swizzle(glm::X, glm::X, glm::X)
-00098 #define yxx swizzle(glm::Y, glm::X, glm::X)
-00099 #define zxx swizzle(glm::Z, glm::X, glm::X)
-00100 #define wxx swizzle(glm::W, glm::X, glm::X)
-00101 #define xyx swizzle(glm::X, glm::Y, glm::X)
-00102 #define yyx swizzle(glm::Y, glm::Y, glm::X)
-00103 #define zyx swizzle(glm::Z, glm::Y, glm::X)
-00104 #define wyx swizzle(glm::W, glm::Y, glm::X)
-00105 #define xzx swizzle(glm::X, glm::Z, glm::X)
-00106 #define yzx swizzle(glm::Y, glm::Z, glm::X)
-00107 #define zzx swizzle(glm::Z, glm::Z, glm::X)
-00108 #define wzx swizzle(glm::W, glm::Z, glm::X)
-00109 #define xwx swizzle(glm::X, glm::W, glm::X)
-00110 #define ywx swizzle(glm::Y, glm::W, glm::X)
-00111 #define zwx swizzle(glm::Z, glm::W, glm::X)
-00112 #define wwx swizzle(glm::W, glm::W, glm::X)
-00113 #define xxy swizzle(glm::X, glm::X, glm::Y)
-00114 #define yxy swizzle(glm::Y, glm::X, glm::Y)
-00115 #define zxy swizzle(glm::Z, glm::X, glm::Y)
-00116 #define wxy swizzle(glm::W, glm::X, glm::Y)
-00117 #define xyy swizzle(glm::X, glm::Y, glm::Y)
-00118 #define yyy swizzle(glm::Y, glm::Y, glm::Y)
-00119 #define zyy swizzle(glm::Z, glm::Y, glm::Y)
-00120 #define wyy swizzle(glm::W, glm::Y, glm::Y)
-00121 #define xzy swizzle(glm::X, glm::Z, glm::Y)
-00122 #define yzy swizzle(glm::Y, glm::Z, glm::Y)
-00123 #define zzy swizzle(glm::Z, glm::Z, glm::Y)
-00124 #define wzy swizzle(glm::W, glm::Z, glm::Y)
-00125 #define xwy swizzle(glm::X, glm::W, glm::Y)
-00126 #define ywy swizzle(glm::Y, glm::W, glm::Y)
-00127 #define zwy swizzle(glm::Z, glm::W, glm::Y)
-00128 #define wwy swizzle(glm::W, glm::W, glm::Y)
-00129 #define xxz swizzle(glm::X, glm::X, glm::Z)
-00130 #define yxz swizzle(glm::Y, glm::X, glm::Z)
-00131 #define zxz swizzle(glm::Z, glm::X, glm::Z)
-00132 #define wxz swizzle(glm::W, glm::X, glm::Z)
-00133 #define xyz swizzle(glm::X, glm::Y, glm::Z)
-00134 #define yyz swizzle(glm::Y, glm::Y, glm::Z)
-00135 #define zyz swizzle(glm::Z, glm::Y, glm::Z)
-00136 #define wyz swizzle(glm::W, glm::Y, glm::Z)
-00137 #define xzz swizzle(glm::X, glm::Z, glm::Z)
-00138 #define yzz swizzle(glm::Y, glm::Z, glm::Z)
-00139 #define zzz swizzle(glm::Z, glm::Z, glm::Z)
-00140 #define wzz swizzle(glm::W, glm::Z, glm::Z)
-00141 #define xwz swizzle(glm::X, glm::W, glm::Z)
-00142 #define ywz swizzle(glm::Y, glm::W, glm::Z)
-00143 #define zwz swizzle(glm::Z, glm::W, glm::Z)
-00144 #define wwz swizzle(glm::W, glm::W, glm::Z)
-00145 #define xxw swizzle(glm::X, glm::X, glm::W)
-00146 #define yxw swizzle(glm::Y, glm::X, glm::W)
-00147 #define zxw swizzle(glm::Z, glm::X, glm::W)
-00148 #define wxw swizzle(glm::W, glm::X, glm::W)
-00149 #define xyw swizzle(glm::X, glm::Y, glm::W)
-00150 #define yyw swizzle(glm::Y, glm::Y, glm::W)
-00151 #define zyw swizzle(glm::Z, glm::Y, glm::W)
-00152 #define wyw swizzle(glm::W, glm::Y, glm::W)
-00153 #define xzw swizzle(glm::X, glm::Z, glm::W)
-00154 #define yzw swizzle(glm::Y, glm::Z, glm::W)
-00155 #define zzw swizzle(glm::Z, glm::Z, glm::W)
-00156 #define wzw swizzle(glm::W, glm::Z, glm::W)
-00157 #define xww swizzle(glm::X, glm::W, glm::W)
-00158 #define yww swizzle(glm::Y, glm::W, glm::W)
-00159 #define zww swizzle(glm::Z, glm::W, glm::W)
-00160 #define www swizzle(glm::W, glm::W, glm::W)
-00161 
-00162 #endif
-00163 
-00164 #if(defined(GLM_SWIZZLE_RGBA) || defined(GLM_SWIZZLE))
-00165 
-00166 #define rrr swizzle(glm::X, glm::X, glm::X)
-00167 #define grr swizzle(glm::Y, glm::X, glm::X)
-00168 #define brr swizzle(glm::Z, glm::X, glm::X)
-00169 #define arr swizzle(glm::W, glm::X, glm::X)
-00170 #define rgr swizzle(glm::X, glm::Y, glm::X)
-00171 #define ggr swizzle(glm::Y, glm::Y, glm::X)
-00172 #define bgr swizzle(glm::Z, glm::Y, glm::X)
-00173 #define agr swizzle(glm::W, glm::Y, glm::X)
-00174 #define rbr swizzle(glm::X, glm::Z, glm::X)
-00175 #define gbr swizzle(glm::Y, glm::Z, glm::X)
-00176 #define bbr swizzle(glm::Z, glm::Z, glm::X)
-00177 #define abr swizzle(glm::W, glm::Z, glm::X)
-00178 #define rar swizzle(glm::X, glm::W, glm::X)
-00179 #define gar swizzle(glm::Y, glm::W, glm::X)
-00180 #define bar swizzle(glm::Z, glm::W, glm::X)
-00181 #define aar swizzle(glm::W, glm::W, glm::X)
-00182 #define rrg swizzle(glm::X, glm::X, glm::Y)
-00183 #define grg swizzle(glm::Y, glm::X, glm::Y)
-00184 #define brg swizzle(glm::Z, glm::X, glm::Y)
-00185 #define arg swizzle(glm::W, glm::X, glm::Y)
-00186 #define rgg swizzle(glm::X, glm::Y, glm::Y)
-00187 #define ggg swizzle(glm::Y, glm::Y, glm::Y)
-00188 #define bgg swizzle(glm::Z, glm::Y, glm::Y)
-00189 #define agg swizzle(glm::W, glm::Y, glm::Y)
-00190 #define rbg swizzle(glm::X, glm::Z, glm::Y)
-00191 #define gbg swizzle(glm::Y, glm::Z, glm::Y)
-00192 #define bbg swizzle(glm::Z, glm::Z, glm::Y)
-00193 #define abg swizzle(glm::W, glm::Z, glm::Y)
-00194 #define rag swizzle(glm::X, glm::W, glm::Y)
-00195 #define gag swizzle(glm::Y, glm::W, glm::Y)
-00196 #define bag swizzle(glm::Z, glm::W, glm::Y)
-00197 #define aag swizzle(glm::W, glm::W, glm::Y)
-00198 #define rrb swizzle(glm::X, glm::X, glm::Z)
-00199 #define grb swizzle(glm::Y, glm::X, glm::Z)
-00200 #define brb swizzle(glm::Z, glm::X, glm::Z)
-00201 #define arb swizzle(glm::W, glm::X, glm::Z)
-00202 #define rgb swizzle(glm::X, glm::Y, glm::Z)
-00203 #define ggb swizzle(glm::Y, glm::Y, glm::Z)
-00204 #define bgb swizzle(glm::Z, glm::Y, glm::Z)
-00205 #define agb swizzle(glm::W, glm::Y, glm::Z)
-00206 #define rbb swizzle(glm::X, glm::Z, glm::Z)
-00207 #define gbb swizzle(glm::Y, glm::Z, glm::Z)
-00208 #define bbb swizzle(glm::Z, glm::Z, glm::Z)
-00209 #define abb swizzle(glm::W, glm::Z, glm::Z)
-00210 #define rab swizzle(glm::X, glm::W, glm::Z)
-00211 #define gab swizzle(glm::Y, glm::W, glm::Z)
-00212 #define bab swizzle(glm::Z, glm::W, glm::Z)
-00213 #define aab swizzle(glm::W, glm::W, glm::Z)
-00214 #define rra swizzle(glm::X, glm::X, glm::W)
-00215 #define gra swizzle(glm::Y, glm::X, glm::W)
-00216 #define bra swizzle(glm::Z, glm::X, glm::W)
-00217 #define ara swizzle(glm::W, glm::X, glm::W)
-00218 #define rga swizzle(glm::X, glm::Y, glm::W)
-00219 #define gga swizzle(glm::Y, glm::Y, glm::W)
-00220 #define bga swizzle(glm::Z, glm::Y, glm::W)
-00221 #define aga swizzle(glm::W, glm::Y, glm::W)
-00222 #define rba swizzle(glm::X, glm::Z, glm::W)
-00223 #define gba swizzle(glm::Y, glm::Z, glm::W)
-00224 #define bba swizzle(glm::Z, glm::Z, glm::W)
-00225 #define aba swizzle(glm::W, glm::Z, glm::W)
-00226 #define raa swizzle(glm::X, glm::W, glm::W)
-00227 #define gaa swizzle(glm::Y, glm::W, glm::W)
-00228 #define baa swizzle(glm::Z, glm::W, glm::W)
-00229 #define aaa swizzle(glm::W, glm::W, glm::W)
-00230 
-00231 #endif
-00232 
-00233 #if(defined(GLM_FORCE_SWIZZLE_STPQ) || defined(GLM_SWIZZLE))
-00234 
-00235 #define sss swizzle(glm::X, glm::X, glm::X)
-00236 #define tss swizzle(glm::Y, glm::X, glm::X)
-00237 #define pss swizzle(glm::Z, glm::X, glm::X)
-00238 #define qss swizzle(glm::W, glm::X, glm::X)
-00239 #define sts swizzle(glm::X, glm::Y, glm::X)
-00240 #define tts swizzle(glm::Y, glm::Y, glm::X)
-00241 #define pts swizzle(glm::Z, glm::Y, glm::X)
-00242 #define qts swizzle(glm::W, glm::Y, glm::X)
-00243 #define sps swizzle(glm::X, glm::Z, glm::X)
-00244 #define tps swizzle(glm::Y, glm::Z, glm::X)
-00245 #define pps swizzle(glm::Z, glm::Z, glm::X)
-00246 #define qps swizzle(glm::W, glm::Z, glm::X)
-00247 #define sqs swizzle(glm::X, glm::W, glm::X)
-00248 #define tqs swizzle(glm::Y, glm::W, glm::X)
-00249 #define pqs swizzle(glm::Z, glm::W, glm::X)
-00250 #define qqs swizzle(glm::W, glm::W, glm::X)
-00251 #define sst swizzle(glm::X, glm::X, glm::Y)
-00252 #define tst swizzle(glm::Y, glm::X, glm::Y)
-00253 #define pst swizzle(glm::Z, glm::X, glm::Y)
-00254 #define qst swizzle(glm::W, glm::X, glm::Y)
-00255 #define stt swizzle(glm::X, glm::Y, glm::Y)
-00256 #define ttt swizzle(glm::Y, glm::Y, glm::Y)
-00257 #define ptt swizzle(glm::Z, glm::Y, glm::Y)
-00258 #define qtt swizzle(glm::W, glm::Y, glm::Y)
-00259 #define spt swizzle(glm::X, glm::Z, glm::Y)
-00260 #define tpt swizzle(glm::Y, glm::Z, glm::Y)
-00261 #define ppt swizzle(glm::Z, glm::Z, glm::Y)
-00262 #define qpt swizzle(glm::W, glm::Z, glm::Y)
-00263 #define sqt swizzle(glm::X, glm::W, glm::Y)
-00264 #define tqt swizzle(glm::Y, glm::W, glm::Y)
-00265 #define pqt swizzle(glm::Z, glm::W, glm::Y)
-00266 #define qqt swizzle(glm::W, glm::W, glm::Y)
-00267 #define ssp swizzle(glm::X, glm::X, glm::Z)
-00268 #define tsp swizzle(glm::Y, glm::X, glm::Z)
-00269 #define psp swizzle(glm::Z, glm::X, glm::Z)
-00270 #define qsp swizzle(glm::W, glm::X, glm::Z)
-00271 #define stp swizzle(glm::X, glm::Y, glm::Z)
-00272 #define ttp swizzle(glm::Y, glm::Y, glm::Z)
-00273 #define ptp swizzle(glm::Z, glm::Y, glm::Z)
-00274 #define qtp swizzle(glm::W, glm::Y, glm::Z)
-00275 #define spp swizzle(glm::X, glm::Z, glm::Z)
-00276 #define tpp swizzle(glm::Y, glm::Z, glm::Z)
-00277 #define ppp swizzle(glm::Z, glm::Z, glm::Z)
-00278 #define qpp swizzle(glm::W, glm::Z, glm::Z)
-00279 #define sqp swizzle(glm::X, glm::W, glm::Z)
-00280 #define tqp swizzle(glm::Y, glm::W, glm::Z)
-00281 #define pqp swizzle(glm::Z, glm::W, glm::Z)
-00282 #define qqp swizzle(glm::W, glm::W, glm::Z)
-00283 #define ssq swizzle(glm::X, glm::X, glm::W)
-00284 #define tsq swizzle(glm::Y, glm::X, glm::W)
-00285 #define psq swizzle(glm::Z, glm::X, glm::W)
-00286 #define qsq swizzle(glm::W, glm::X, glm::W)
-00287 #define stq swizzle(glm::X, glm::Y, glm::W)
-00288 #define ttq swizzle(glm::Y, glm::Y, glm::W)
-00289 #define ptq swizzle(glm::Z, glm::Y, glm::W)
-00290 #define qtq swizzle(glm::W, glm::Y, glm::W)
-00291 #define spq swizzle(glm::X, glm::Z, glm::W)
-00292 #define tpq swizzle(glm::Y, glm::Z, glm::W)
-00293 #define ppq swizzle(glm::Z, glm::Z, glm::W)
-00294 #define qpq swizzle(glm::W, glm::Z, glm::W)
-00295 #define sqq swizzle(glm::X, glm::W, glm::W)
-00296 #define tqq swizzle(glm::Y, glm::W, glm::W)
-00297 #define pqq swizzle(glm::Z, glm::W, glm::W)
-00298 #define qqq swizzle(glm::W, glm::W, glm::W)
-00299 
-00300 #endif
-00301 
-00302 #if(defined(GLM_SWIZZLE_XYZW) || defined(GLM_SWIZZLE))
-00303 
-00304 #define xxxx swizzle(glm::X, glm::X, glm::X, glm::X)
-00305 #define yxxx swizzle(glm::Y, glm::X, glm::X, glm::X)
-00306 #define zxxx swizzle(glm::Z, glm::X, glm::X, glm::X)
-00307 #define wxxx swizzle(glm::W, glm::X, glm::X, glm::X)
-00308 #define xyxx swizzle(glm::X, glm::Y, glm::X, glm::X)
-00309 #define yyxx swizzle(glm::Y, glm::Y, glm::X, glm::X)
-00310 #define zyxx swizzle(glm::Z, glm::Y, glm::X, glm::X)
-00311 #define wyxx swizzle(glm::W, glm::Y, glm::X, glm::X)
-00312 #define xzxx swizzle(glm::X, glm::Z, glm::X, glm::X)
-00313 #define yzxx swizzle(glm::Y, glm::Z, glm::X, glm::X)
-00314 #define zzxx swizzle(glm::Z, glm::Z, glm::X, glm::X)
-00315 #define wzxx swizzle(glm::W, glm::Z, glm::X, glm::X)
-00316 #define xwxx swizzle(glm::X, glm::W, glm::X, glm::X)
-00317 #define ywxx swizzle(glm::Y, glm::W, glm::X, glm::X)
-00318 #define zwxx swizzle(glm::Z, glm::W, glm::X, glm::X)
-00319 #define wwxx swizzle(glm::W, glm::W, glm::X, glm::X)
-00320 #define xxyx swizzle(glm::X, glm::X, glm::Y, glm::X)
-00321 #define yxyx swizzle(glm::Y, glm::X, glm::Y, glm::X)
-00322 #define zxyx swizzle(glm::Z, glm::X, glm::Y, glm::X)
-00323 #define wxyx swizzle(glm::W, glm::X, glm::Y, glm::X)
-00324 #define xyyx swizzle(glm::X, glm::Y, glm::Y, glm::X)
-00325 #define yyyx swizzle(glm::Y, glm::Y, glm::Y, glm::X)
-00326 #define zyyx swizzle(glm::Z, glm::Y, glm::Y, glm::X)
-00327 #define wyyx swizzle(glm::W, glm::Y, glm::Y, glm::X)
-00328 #define xzyx swizzle(glm::X, glm::Z, glm::Y, glm::X)
-00329 #define yzyx swizzle(glm::Y, glm::Z, glm::Y, glm::X)
-00330 #define zzyx swizzle(glm::Z, glm::Z, glm::Y, glm::X)
-00331 #define wzyx swizzle(glm::W, glm::Z, glm::Y, glm::X)
-00332 #define xwyx swizzle(glm::X, glm::W, glm::Y, glm::X)
-00333 #define ywyx swizzle(glm::Y, glm::W, glm::Y, glm::X)
-00334 #define zwyx swizzle(glm::Z, glm::W, glm::Y, glm::X)
-00335 #define wwyx swizzle(glm::W, glm::W, glm::Y, glm::X)
-00336 #define xxzx swizzle(glm::X, glm::X, glm::Z, glm::X)
-00337 #define yxzx swizzle(glm::Y, glm::X, glm::Z, glm::X)
-00338 #define zxzx swizzle(glm::Z, glm::X, glm::Z, glm::X)
-00339 #define wxzx swizzle(glm::W, glm::X, glm::Z, glm::X)
-00340 #define xyzx swizzle(glm::X, glm::Y, glm::Z, glm::X)
-00341 #define yyzx swizzle(glm::Y, glm::Y, glm::Z, glm::X)
-00342 #define zyzx swizzle(glm::Z, glm::Y, glm::Z, glm::X)
-00343 #define wyzx swizzle(glm::W, glm::Y, glm::Z, glm::X)
-00344 #define xzzx swizzle(glm::X, glm::Z, glm::Z, glm::X)
-00345 #define yzzx swizzle(glm::Y, glm::Z, glm::Z, glm::X)
-00346 #define zzzx swizzle(glm::Z, glm::Z, glm::Z, glm::X)
-00347 #define wzzx swizzle(glm::W, glm::Z, glm::Z, glm::X)
-00348 #define xwzx swizzle(glm::X, glm::W, glm::Z, glm::X)
-00349 #define ywzx swizzle(glm::Y, glm::W, glm::Z, glm::X)
-00350 #define zwzx swizzle(glm::Z, glm::W, glm::Z, glm::X)
-00351 #define wwzx swizzle(glm::W, glm::W, glm::Z, glm::X)
-00352 #define xxwx swizzle(glm::X, glm::X, glm::W, glm::X)
-00353 #define yxwx swizzle(glm::Y, glm::X, glm::W, glm::X)
-00354 #define zxwx swizzle(glm::Z, glm::X, glm::W, glm::X)
-00355 #define wxwx swizzle(glm::W, glm::X, glm::W, glm::X)
-00356 #define xywx swizzle(glm::X, glm::Y, glm::W, glm::X)
-00357 #define yywx swizzle(glm::Y, glm::Y, glm::W, glm::X)
-00358 #define zywx swizzle(glm::Z, glm::Y, glm::W, glm::X)
-00359 #define wywx swizzle(glm::W, glm::Y, glm::W, glm::X)
-00360 #define xzwx swizzle(glm::X, glm::Z, glm::W, glm::X)
-00361 #define yzwx swizzle(glm::Y, glm::Z, glm::W, glm::X)
-00362 #define zzwx swizzle(glm::Z, glm::Z, glm::W, glm::X)
-00363 #define wzwx swizzle(glm::W, glm::Z, glm::W, glm::X)
-00364 #define xwwx swizzle(glm::X, glm::W, glm::W, glm::X)
-00365 #define ywwx swizzle(glm::Y, glm::W, glm::W, glm::X)
-00366 #define zwwx swizzle(glm::Z, glm::W, glm::W, glm::X)
-00367 #define wwwx swizzle(glm::W, glm::W, glm::W, glm::X)
-00368 #define xxxy swizzle(glm::X, glm::X, glm::X, glm::Y)
-00369 #define yxxy swizzle(glm::Y, glm::X, glm::X, glm::Y)
-00370 #define zxxy swizzle(glm::Z, glm::X, glm::X, glm::Y)
-00371 #define wxxy swizzle(glm::W, glm::X, glm::X, glm::Y)
-00372 #define xyxy swizzle(glm::X, glm::Y, glm::X, glm::Y)
-00373 #define yyxy swizzle(glm::Y, glm::Y, glm::X, glm::Y)
-00374 #define zyxy swizzle(glm::Z, glm::Y, glm::X, glm::Y)
-00375 #define wyxy swizzle(glm::W, glm::Y, glm::X, glm::Y)
-00376 #define xzxy swizzle(glm::X, glm::Z, glm::X, glm::Y)
-00377 #define yzxy swizzle(glm::Y, glm::Z, glm::X, glm::Y)
-00378 #define zzxy swizzle(glm::Z, glm::Z, glm::X, glm::Y)
-00379 #define wzxy swizzle(glm::W, glm::Z, glm::X, glm::Y)
-00380 #define xwxy swizzle(glm::X, glm::W, glm::X, glm::Y)
-00381 #define ywxy swizzle(glm::Y, glm::W, glm::X, glm::Y)
-00382 #define zwxy swizzle(glm::Z, glm::W, glm::X, glm::Y)
-00383 #define wwxy swizzle(glm::W, glm::W, glm::X, glm::Y)
-00384 #define xxyy swizzle(glm::X, glm::X, glm::Y, glm::Y)
-00385 #define yxyy swizzle(glm::Y, glm::X, glm::Y, glm::Y)
-00386 #define zxyy swizzle(glm::Z, glm::X, glm::Y, glm::Y)
-00387 #define wxyy swizzle(glm::W, glm::X, glm::Y, glm::Y)
-00388 #define xyyy swizzle(glm::X, glm::Y, glm::Y, glm::Y)
-00389 #define yyyy swizzle(glm::Y, glm::Y, glm::Y, glm::Y)
-00390 #define zyyy swizzle(glm::Z, glm::Y, glm::Y, glm::Y)
-00391 #define wyyy swizzle(glm::W, glm::Y, glm::Y, glm::Y)
-00392 #define xzyy swizzle(glm::X, glm::Z, glm::Y, glm::Y)
-00393 #define yzyy swizzle(glm::Y, glm::Z, glm::Y, glm::Y)
-00394 #define zzyy swizzle(glm::Z, glm::Z, glm::Y, glm::Y)
-00395 #define wzyy swizzle(glm::W, glm::Z, glm::Y, glm::Y)
-00396 #define xwyy swizzle(glm::X, glm::W, glm::Y, glm::Y)
-00397 #define ywyy swizzle(glm::Y, glm::W, glm::Y, glm::Y)
-00398 #define zwyy swizzle(glm::Z, glm::W, glm::Y, glm::Y)
-00399 #define wwyy swizzle(glm::W, glm::W, glm::Y, glm::Y)
-00400 #define xxzy swizzle(glm::X, glm::X, glm::Z, glm::Y)
-00401 #define yxzy swizzle(glm::Y, glm::X, glm::Z, glm::Y)
-00402 #define zxzy swizzle(glm::Z, glm::X, glm::Z, glm::Y)
-00403 #define wxzy swizzle(glm::W, glm::X, glm::Z, glm::Y)
-00404 #define xyzy swizzle(glm::X, glm::Y, glm::Z, glm::Y)
-00405 #define yyzy swizzle(glm::Y, glm::Y, glm::Z, glm::Y)
-00406 #define zyzy swizzle(glm::Z, glm::Y, glm::Z, glm::Y)
-00407 #define wyzy swizzle(glm::W, glm::Y, glm::Z, glm::Y)
-00408 #define xzzy swizzle(glm::X, glm::Z, glm::Z, glm::Y)
-00409 #define yzzy swizzle(glm::Y, glm::Z, glm::Z, glm::Y)
-00410 #define zzzy swizzle(glm::Z, glm::Z, glm::Z, glm::Y)
-00411 #define wzzy swizzle(glm::W, glm::Z, glm::Z, glm::Y)
-00412 #define xwzy swizzle(glm::X, glm::W, glm::Z, glm::Y)
-00413 #define ywzy swizzle(glm::Y, glm::W, glm::Z, glm::Y)
-00414 #define zwzy swizzle(glm::Z, glm::W, glm::Z, glm::Y)
-00415 #define wwzy swizzle(glm::W, glm::W, glm::Z, glm::Y)
-00416 #define xxwy swizzle(glm::X, glm::X, glm::W, glm::Y)
-00417 #define yxwy swizzle(glm::Y, glm::X, glm::W, glm::Y)
-00418 #define zxwy swizzle(glm::Z, glm::X, glm::W, glm::Y)
-00419 #define wxwy swizzle(glm::W, glm::X, glm::W, glm::Y)
-00420 #define xywy swizzle(glm::X, glm::Y, glm::W, glm::Y)
-00421 #define yywy swizzle(glm::Y, glm::Y, glm::W, glm::Y)
-00422 #define zywy swizzle(glm::Z, glm::Y, glm::W, glm::Y)
-00423 #define wywy swizzle(glm::W, glm::Y, glm::W, glm::Y)
-00424 #define xzwy swizzle(glm::X, glm::Z, glm::W, glm::Y)
-00425 #define yzwy swizzle(glm::Y, glm::Z, glm::W, glm::Y)
-00426 #define zzwy swizzle(glm::Z, glm::Z, glm::W, glm::Y)
-00427 #define wzwy swizzle(glm::W, glm::Z, glm::W, glm::Y)
-00428 #define xwwy swizzle(glm::X, glm::W, glm::W, glm::Y)
-00429 #define ywwy swizzle(glm::Y, glm::W, glm::W, glm::Y)
-00430 #define zwwy swizzle(glm::Z, glm::W, glm::W, glm::Y)
-00431 #define wwwy swizzle(glm::W, glm::W, glm::W, glm::Y)
-00432 #define xxxz swizzle(glm::X, glm::X, glm::X, glm::Z)
-00433 #define yxxz swizzle(glm::Y, glm::X, glm::X, glm::Z)
-00434 #define zxxz swizzle(glm::Z, glm::X, glm::X, glm::Z)
-00435 #define wxxz swizzle(glm::W, glm::X, glm::X, glm::Z)
-00436 #define xyxz swizzle(glm::X, glm::Y, glm::X, glm::Z)
-00437 #define yyxz swizzle(glm::Y, glm::Y, glm::X, glm::Z)
-00438 #define zyxz swizzle(glm::Z, glm::Y, glm::X, glm::Z)
-00439 #define wyxz swizzle(glm::W, glm::Y, glm::X, glm::Z)
-00440 #define xzxz swizzle(glm::X, glm::Z, glm::X, glm::Z)
-00441 #define yzxz swizzle(glm::Y, glm::Z, glm::X, glm::Z)
-00442 #define zzxz swizzle(glm::Z, glm::Z, glm::X, glm::Z)
-00443 #define wzxz swizzle(glm::W, glm::Z, glm::X, glm::Z)
-00444 #define xwxz swizzle(glm::X, glm::W, glm::X, glm::Z)
-00445 #define ywxz swizzle(glm::Y, glm::W, glm::X, glm::Z)
-00446 #define zwxz swizzle(glm::Z, glm::W, glm::X, glm::Z)
-00447 #define wwxz swizzle(glm::W, glm::W, glm::X, glm::Z)
-00448 #define xxyz swizzle(glm::X, glm::X, glm::Y, glm::Z)
-00449 #define yxyz swizzle(glm::Y, glm::X, glm::Y, glm::Z)
-00450 #define zxyz swizzle(glm::Z, glm::X, glm::Y, glm::Z)
-00451 #define wxyz swizzle(glm::W, glm::X, glm::Y, glm::Z)
-00452 #define xyyz swizzle(glm::X, glm::Y, glm::Y, glm::Z)
-00453 #define yyyz swizzle(glm::Y, glm::Y, glm::Y, glm::Z)
-00454 #define zyyz swizzle(glm::Z, glm::Y, glm::Y, glm::Z)
-00455 #define wyyz swizzle(glm::W, glm::Y, glm::Y, glm::Z)
-00456 #define xzyz swizzle(glm::X, glm::Z, glm::Y, glm::Z)
-00457 #define yzyz swizzle(glm::Y, glm::Z, glm::Y, glm::Z)
-00458 #define zzyz swizzle(glm::Z, glm::Z, glm::Y, glm::Z)
-00459 #define wzyz swizzle(glm::W, glm::Z, glm::Y, glm::Z)
-00460 #define xwyz swizzle(glm::X, glm::W, glm::Y, glm::Z)
-00461 #define ywyz swizzle(glm::Y, glm::W, glm::Y, glm::Z)
-00462 #define zwyz swizzle(glm::Z, glm::W, glm::Y, glm::Z)
-00463 #define wwyz swizzle(glm::W, glm::W, glm::Y, glm::Z)
-00464 #define xxzz swizzle(glm::X, glm::X, glm::Z, glm::Z)
-00465 #define yxzz swizzle(glm::Y, glm::X, glm::Z, glm::Z)
-00466 #define zxzz swizzle(glm::Z, glm::X, glm::Z, glm::Z)
-00467 #define wxzz swizzle(glm::W, glm::X, glm::Z, glm::Z)
-00468 #define xyzz swizzle(glm::X, glm::Y, glm::Z, glm::Z)
-00469 #define yyzz swizzle(glm::Y, glm::Y, glm::Z, glm::Z)
-00470 #define zyzz swizzle(glm::Z, glm::Y, glm::Z, glm::Z)
-00471 #define wyzz swizzle(glm::W, glm::Y, glm::Z, glm::Z)
-00472 #define xzzz swizzle(glm::X, glm::Z, glm::Z, glm::Z)
-00473 #define yzzz swizzle(glm::Y, glm::Z, glm::Z, glm::Z)
-00474 #define zzzz swizzle(glm::Z, glm::Z, glm::Z, glm::Z)
-00475 #define wzzz swizzle(glm::W, glm::Z, glm::Z, glm::Z)
-00476 #define xwzz swizzle(glm::X, glm::W, glm::Z, glm::Z)
-00477 #define ywzz swizzle(glm::Y, glm::W, glm::Z, glm::Z)
-00478 #define zwzz swizzle(glm::Z, glm::W, glm::Z, glm::Z)
-00479 #define wwzz swizzle(glm::W, glm::W, glm::Z, glm::Z)
-00480 #define xxwz swizzle(glm::X, glm::X, glm::W, glm::Z)
-00481 #define yxwz swizzle(glm::Y, glm::X, glm::W, glm::Z)
-00482 #define zxwz swizzle(glm::Z, glm::X, glm::W, glm::Z)
-00483 #define wxwz swizzle(glm::W, glm::X, glm::W, glm::Z)
-00484 #define xywz swizzle(glm::X, glm::Y, glm::W, glm::Z)
-00485 #define yywz swizzle(glm::Y, glm::Y, glm::W, glm::Z)
-00486 #define zywz swizzle(glm::Z, glm::Y, glm::W, glm::Z)
-00487 #define wywz swizzle(glm::W, glm::Y, glm::W, glm::Z)
-00488 #define xzwz swizzle(glm::X, glm::Z, glm::W, glm::Z)
-00489 #define yzwz swizzle(glm::Y, glm::Z, glm::W, glm::Z)
-00490 #define zzwz swizzle(glm::Z, glm::Z, glm::W, glm::Z)
-00491 #define wzwz swizzle(glm::W, glm::Z, glm::W, glm::Z)
-00492 #define xwwz swizzle(glm::X, glm::W, glm::W, glm::Z)
-00493 #define ywwz swizzle(glm::Y, glm::W, glm::W, glm::Z)
-00494 #define zwwz swizzle(glm::Z, glm::W, glm::W, glm::Z)
-00495 #define wwwz swizzle(glm::W, glm::W, glm::W, glm::Z)
-00496 #define xxxw swizzle(glm::X, glm::X, glm::X, glm::W)
-00497 #define yxxw swizzle(glm::Y, glm::X, glm::X, glm::W)
-00498 #define zxxw swizzle(glm::Z, glm::X, glm::X, glm::W)
-00499 #define wxxw swizzle(glm::W, glm::X, glm::X, glm::W)
-00500 #define xyxw swizzle(glm::X, glm::Y, glm::X, glm::W)
-00501 #define yyxw swizzle(glm::Y, glm::Y, glm::X, glm::W)
-00502 #define zyxw swizzle(glm::Z, glm::Y, glm::X, glm::W)
-00503 #define wyxw swizzle(glm::W, glm::Y, glm::X, glm::W)
-00504 #define xzxw swizzle(glm::X, glm::Z, glm::X, glm::W)
-00505 #define yzxw swizzle(glm::Y, glm::Z, glm::X, glm::W)
-00506 #define zzxw swizzle(glm::Z, glm::Z, glm::X, glm::W)
-00507 #define wzxw swizzle(glm::W, glm::Z, glm::X, glm::W)
-00508 #define xwxw swizzle(glm::X, glm::W, glm::X, glm::W)
-00509 #define ywxw swizzle(glm::Y, glm::W, glm::X, glm::W)
-00510 #define zwxw swizzle(glm::Z, glm::W, glm::X, glm::W)
-00511 #define wwxw swizzle(glm::W, glm::W, glm::X, glm::W)
-00512 #define xxyw swizzle(glm::X, glm::X, glm::Y, glm::W)
-00513 #define yxyw swizzle(glm::Y, glm::X, glm::Y, glm::W)
-00514 #define zxyw swizzle(glm::Z, glm::X, glm::Y, glm::W)
-00515 #define wxyw swizzle(glm::W, glm::X, glm::Y, glm::W)
-00516 #define xyyw swizzle(glm::X, glm::Y, glm::Y, glm::W)
-00517 #define yyyw swizzle(glm::Y, glm::Y, glm::Y, glm::W)
-00518 #define zyyw swizzle(glm::Z, glm::Y, glm::Y, glm::W)
-00519 #define wyyw swizzle(glm::W, glm::Y, glm::Y, glm::W)
-00520 #define xzyw swizzle(glm::X, glm::Z, glm::Y, glm::W)
-00521 #define yzyw swizzle(glm::Y, glm::Z, glm::Y, glm::W)
-00522 #define zzyw swizzle(glm::Z, glm::Z, glm::Y, glm::W)
-00523 #define wzyw swizzle(glm::W, glm::Z, glm::Y, glm::W)
-00524 #define xwyw swizzle(glm::X, glm::W, glm::Y, glm::W)
-00525 #define ywyw swizzle(glm::Y, glm::W, glm::Y, glm::W)
-00526 #define zwyw swizzle(glm::Z, glm::W, glm::Y, glm::W)
-00527 #define wwyw swizzle(glm::W, glm::W, glm::Y, glm::W)
-00528 #define xxzw swizzle(glm::X, glm::X, glm::Z, glm::W)
-00529 #define yxzw swizzle(glm::Y, glm::X, glm::Z, glm::W)
-00530 #define zxzw swizzle(glm::Z, glm::X, glm::Z, glm::W)
-00531 #define wxzw swizzle(glm::W, glm::X, glm::Z, glm::W)
-00532 #define xyzw swizzle(glm::X, glm::Y, glm::Z, glm::W)
-00533 #define yyzw swizzle(glm::Y, glm::Y, glm::Z, glm::W)
-00534 #define zyzw swizzle(glm::Z, glm::Y, glm::Z, glm::W)
-00535 #define wyzw swizzle(glm::W, glm::Y, glm::Z, glm::W)
-00536 #define xzzw swizzle(glm::X, glm::Z, glm::Z, glm::W)
-00537 #define yzzw swizzle(glm::Y, glm::Z, glm::Z, glm::W)
-00538 #define zzzw swizzle(glm::Z, glm::Z, glm::Z, glm::W)
-00539 #define wzzw swizzle(glm::W, glm::Z, glm::Z, glm::W)
-00540 #define xwzw swizzle(glm::X, glm::W, glm::Z, glm::W)
-00541 #define ywzw swizzle(glm::Y, glm::W, glm::Z, glm::W)
-00542 #define zwzw swizzle(glm::Z, glm::W, glm::Z, glm::W)
-00543 #define wwzw swizzle(glm::W, glm::W, glm::Z, glm::W)
-00544 #define xxww swizzle(glm::X, glm::X, glm::W, glm::W)
-00545 #define yxww swizzle(glm::Y, glm::X, glm::W, glm::W)
-00546 #define zxww swizzle(glm::Z, glm::X, glm::W, glm::W)
-00547 #define wxww swizzle(glm::W, glm::X, glm::W, glm::W)
-00548 #define xyww swizzle(glm::X, glm::Y, glm::W, glm::W)
-00549 #define yyww swizzle(glm::Y, glm::Y, glm::W, glm::W)
-00550 #define zyww swizzle(glm::Z, glm::Y, glm::W, glm::W)
-00551 #define wyww swizzle(glm::W, glm::Y, glm::W, glm::W)
-00552 #define xzww swizzle(glm::X, glm::Z, glm::W, glm::W)
-00553 #define yzww swizzle(glm::Y, glm::Z, glm::W, glm::W)
-00554 #define zzww swizzle(glm::Z, glm::Z, glm::W, glm::W)
-00555 #define wzww swizzle(glm::W, glm::Z, glm::W, glm::W)
-00556 #define xwww swizzle(glm::X, glm::W, glm::W, glm::W)
-00557 #define ywww swizzle(glm::Y, glm::W, glm::W, glm::W)
-00558 #define zwww swizzle(glm::Z, glm::W, glm::W, glm::W)
-00559 #define wwww swizzle(glm::W, glm::W, glm::W, glm::W)
-00560 
-00561 #endif
-00562 
-00563 #if(defined(GLM_SWIZZLE_RGBA) || defined(GLM_SWIZZLE))
-00564 
-00565 #define rrrr swizzle(glm::X, glm::X, glm::X, glm::X)
-00566 #define grrr swizzle(glm::Y, glm::X, glm::X, glm::X)
-00567 #define brrr swizzle(glm::Z, glm::X, glm::X, glm::X)
-00568 #define arrr swizzle(glm::W, glm::X, glm::X, glm::X)
-00569 #define rgrr swizzle(glm::X, glm::Y, glm::X, glm::X)
-00570 #define ggrr swizzle(glm::Y, glm::Y, glm::X, glm::X)
-00571 #define bgrr swizzle(glm::Z, glm::Y, glm::X, glm::X)
-00572 #define agrr swizzle(glm::W, glm::Y, glm::X, glm::X)
-00573 #define rbrr swizzle(glm::X, glm::Z, glm::X, glm::X)
-00574 #define gbrr swizzle(glm::Y, glm::Z, glm::X, glm::X)
-00575 #define bbrr swizzle(glm::Z, glm::Z, glm::X, glm::X)
-00576 #define abrr swizzle(glm::W, glm::Z, glm::X, glm::X)
-00577 #define rarr swizzle(glm::X, glm::W, glm::X, glm::X)
-00578 #define garr swizzle(glm::Y, glm::W, glm::X, glm::X)
-00579 #define barr swizzle(glm::Z, glm::W, glm::X, glm::X)
-00580 #define aarr swizzle(glm::W, glm::W, glm::X, glm::X)
-00581 #define rrgr swizzle(glm::X, glm::X, glm::Y, glm::X)
-00582 #define grgr swizzle(glm::Y, glm::X, glm::Y, glm::X)
-00583 #define brgr swizzle(glm::Z, glm::X, glm::Y, glm::X)
-00584 #define argr swizzle(glm::W, glm::X, glm::Y, glm::X)
-00585 #define rggr swizzle(glm::X, glm::Y, glm::Y, glm::X)
-00586 #define gggr swizzle(glm::Y, glm::Y, glm::Y, glm::X)
-00587 #define bggr swizzle(glm::Z, glm::Y, glm::Y, glm::X)
-00588 #define aggr swizzle(glm::W, glm::Y, glm::Y, glm::X)
-00589 #define rbgr swizzle(glm::X, glm::Z, glm::Y, glm::X)
-00590 #define gbgr swizzle(glm::Y, glm::Z, glm::Y, glm::X)
-00591 #define bbgr swizzle(glm::Z, glm::Z, glm::Y, glm::X)
-00592 #define abgr swizzle(glm::W, glm::Z, glm::Y, glm::X)
-00593 #define ragr swizzle(glm::X, glm::W, glm::Y, glm::X)
-00594 #define gagr swizzle(glm::Y, glm::W, glm::Y, glm::X)
-00595 #define bagr swizzle(glm::Z, glm::W, glm::Y, glm::X)
-00596 #define aagr swizzle(glm::W, glm::W, glm::Y, glm::X)
-00597 #define rrbr swizzle(glm::X, glm::X, glm::Z, glm::X)
-00598 #define grbr swizzle(glm::Y, glm::X, glm::Z, glm::X)
-00599 #define brbr swizzle(glm::Z, glm::X, glm::Z, glm::X)
-00600 #define arbr swizzle(glm::W, glm::X, glm::Z, glm::X)
-00601 #define rgbr swizzle(glm::X, glm::Y, glm::Z, glm::X)
-00602 #define ggbr swizzle(glm::Y, glm::Y, glm::Z, glm::X)
-00603 #define bgbr swizzle(glm::Z, glm::Y, glm::Z, glm::X)
-00604 #define agbr swizzle(glm::W, glm::Y, glm::Z, glm::X)
-00605 #define rbbr swizzle(glm::X, glm::Z, glm::Z, glm::X)
-00606 #define gbbr swizzle(glm::Y, glm::Z, glm::Z, glm::X)
-00607 #define bbbr swizzle(glm::Z, glm::Z, glm::Z, glm::X)
-00608 #define abbr swizzle(glm::W, glm::Z, glm::Z, glm::X)
-00609 #define rabr swizzle(glm::X, glm::W, glm::Z, glm::X)
-00610 #define gabr swizzle(glm::Y, glm::W, glm::Z, glm::X)
-00611 #define babr swizzle(glm::Z, glm::W, glm::Z, glm::X)
-00612 #define aabr swizzle(glm::W, glm::W, glm::Z, glm::X)
-00613 #define rrar swizzle(glm::X, glm::X, glm::W, glm::X)
-00614 #define grar swizzle(glm::Y, glm::X, glm::W, glm::X)
-00615 #define brar swizzle(glm::Z, glm::X, glm::W, glm::X)
-00616 #define arar swizzle(glm::W, glm::X, glm::W, glm::X)
-00617 #define rgar swizzle(glm::X, glm::Y, glm::W, glm::X)
-00618 #define ggar swizzle(glm::Y, glm::Y, glm::W, glm::X)
-00619 #define bgar swizzle(glm::Z, glm::Y, glm::W, glm::X)
-00620 #define agar swizzle(glm::W, glm::Y, glm::W, glm::X)
-00621 #define rbar swizzle(glm::X, glm::Z, glm::W, glm::X)
-00622 #define gbar swizzle(glm::Y, glm::Z, glm::W, glm::X)
-00623 #define bbar swizzle(glm::Z, glm::Z, glm::W, glm::X)
-00624 #define abar swizzle(glm::W, glm::Z, glm::W, glm::X)
-00625 #define raar swizzle(glm::X, glm::W, glm::W, glm::X)
-00626 #define gaar swizzle(glm::Y, glm::W, glm::W, glm::X)
-00627 #define baar swizzle(glm::Z, glm::W, glm::W, glm::X)
-00628 #define aaar swizzle(glm::W, glm::W, glm::W, glm::X)
-00629 #define rrrg swizzle(glm::X, glm::X, glm::X, glm::Y)
-00630 #define grrg swizzle(glm::Y, glm::X, glm::X, glm::Y)
-00631 #define brrg swizzle(glm::Z, glm::X, glm::X, glm::Y)
-00632 #define arrg swizzle(glm::W, glm::X, glm::X, glm::Y)
-00633 #define rgrg swizzle(glm::X, glm::Y, glm::X, glm::Y)
-00634 #define ggrg swizzle(glm::Y, glm::Y, glm::X, glm::Y)
-00635 #define bgrg swizzle(glm::Z, glm::Y, glm::X, glm::Y)
-00636 #define agrg swizzle(glm::W, glm::Y, glm::X, glm::Y)
-00637 #define rbrg swizzle(glm::X, glm::Z, glm::X, glm::Y)
-00638 #define gbrg swizzle(glm::Y, glm::Z, glm::X, glm::Y)
-00639 #define bbrg swizzle(glm::Z, glm::Z, glm::X, glm::Y)
-00640 #define abrg swizzle(glm::W, glm::Z, glm::X, glm::Y)
-00641 #define rarg swizzle(glm::X, glm::W, glm::X, glm::Y)
-00642 #define garg swizzle(glm::Y, glm::W, glm::X, glm::Y)
-00643 #define barg swizzle(glm::Z, glm::W, glm::X, glm::Y)
-00644 #define aarg swizzle(glm::W, glm::W, glm::X, glm::Y)
-00645 #define rrgg swizzle(glm::X, glm::X, glm::Y, glm::Y)
-00646 #define grgg swizzle(glm::Y, glm::X, glm::Y, glm::Y)
-00647 #define brgg swizzle(glm::Z, glm::X, glm::Y, glm::Y)
-00648 #define argg swizzle(glm::W, glm::X, glm::Y, glm::Y)
-00649 #define rggg swizzle(glm::X, glm::Y, glm::Y, glm::Y)
-00650 #define gggg swizzle(glm::Y, glm::Y, glm::Y, glm::Y)
-00651 #define bggg swizzle(glm::Z, glm::Y, glm::Y, glm::Y)
-00652 #define aggg swizzle(glm::W, glm::Y, glm::Y, glm::Y)
-00653 #define rbgg swizzle(glm::X, glm::Z, glm::Y, glm::Y)
-00654 #define gbgg swizzle(glm::Y, glm::Z, glm::Y, glm::Y)
-00655 #define bbgg swizzle(glm::Z, glm::Z, glm::Y, glm::Y)
-00656 #define abgg swizzle(glm::W, glm::Z, glm::Y, glm::Y)
-00657 #define ragg swizzle(glm::X, glm::W, glm::Y, glm::Y)
-00658 #define gagg swizzle(glm::Y, glm::W, glm::Y, glm::Y)
-00659 #define bagg swizzle(glm::Z, glm::W, glm::Y, glm::Y)
-00660 #define aagg swizzle(glm::W, glm::W, glm::Y, glm::Y)
-00661 #define rrbg swizzle(glm::X, glm::X, glm::Z, glm::Y)
-00662 #define grbg swizzle(glm::Y, glm::X, glm::Z, glm::Y)
-00663 #define brbg swizzle(glm::Z, glm::X, glm::Z, glm::Y)
-00664 #define arbg swizzle(glm::W, glm::X, glm::Z, glm::Y)
-00665 #define rgbg swizzle(glm::X, glm::Y, glm::Z, glm::Y)
-00666 #define ggbg swizzle(glm::Y, glm::Y, glm::Z, glm::Y)
-00667 #define bgbg swizzle(glm::Z, glm::Y, glm::Z, glm::Y)
-00668 #define agbg swizzle(glm::W, glm::Y, glm::Z, glm::Y)
-00669 #define rbbg swizzle(glm::X, glm::Z, glm::Z, glm::Y)
-00670 #define gbbg swizzle(glm::Y, glm::Z, glm::Z, glm::Y)
-00671 #define bbbg swizzle(glm::Z, glm::Z, glm::Z, glm::Y)
-00672 #define abbg swizzle(glm::W, glm::Z, glm::Z, glm::Y)
-00673 #define rabg swizzle(glm::X, glm::W, glm::Z, glm::Y)
-00674 #define gabg swizzle(glm::Y, glm::W, glm::Z, glm::Y)
-00675 #define babg swizzle(glm::Z, glm::W, glm::Z, glm::Y)
-00676 #define aabg swizzle(glm::W, glm::W, glm::Z, glm::Y)
-00677 #define rrag swizzle(glm::X, glm::X, glm::W, glm::Y)
-00678 #define grag swizzle(glm::Y, glm::X, glm::W, glm::Y)
-00679 #define brag swizzle(glm::Z, glm::X, glm::W, glm::Y)
-00680 #define arag swizzle(glm::W, glm::X, glm::W, glm::Y)
-00681 #define rgag swizzle(glm::X, glm::Y, glm::W, glm::Y)
-00682 #define ggag swizzle(glm::Y, glm::Y, glm::W, glm::Y)
-00683 #define bgag swizzle(glm::Z, glm::Y, glm::W, glm::Y)
-00684 #define agag swizzle(glm::W, glm::Y, glm::W, glm::Y)
-00685 #define rbag swizzle(glm::X, glm::Z, glm::W, glm::Y)
-00686 #define gbag swizzle(glm::Y, glm::Z, glm::W, glm::Y)
-00687 #define bbag swizzle(glm::Z, glm::Z, glm::W, glm::Y)
-00688 #define abag swizzle(glm::W, glm::Z, glm::W, glm::Y)
-00689 #define raag swizzle(glm::X, glm::W, glm::W, glm::Y)
-00690 #define gaag swizzle(glm::Y, glm::W, glm::W, glm::Y)
-00691 #define baag swizzle(glm::Z, glm::W, glm::W, glm::Y)
-00692 #define aaag swizzle(glm::W, glm::W, glm::W, glm::Y)
-00693 #define rrrb swizzle(glm::X, glm::X, glm::X, glm::Z)
-00694 #define grrb swizzle(glm::Y, glm::X, glm::X, glm::Z)
-00695 #define brrb swizzle(glm::Z, glm::X, glm::X, glm::Z)
-00696 #define arrb swizzle(glm::W, glm::X, glm::X, glm::Z)
-00697 #define rgrb swizzle(glm::X, glm::Y, glm::X, glm::Z)
-00698 #define ggrb swizzle(glm::Y, glm::Y, glm::X, glm::Z)
-00699 #define bgrb swizzle(glm::Z, glm::Y, glm::X, glm::Z)
-00700 #define agrb swizzle(glm::W, glm::Y, glm::X, glm::Z)
-00701 #define rbrb swizzle(glm::X, glm::Z, glm::X, glm::Z)
-00702 #define gbrb swizzle(glm::Y, glm::Z, glm::X, glm::Z)
-00703 #define bbrb swizzle(glm::Z, glm::Z, glm::X, glm::Z)
-00704 #define abrb swizzle(glm::W, glm::Z, glm::X, glm::Z)
-00705 #define rarb swizzle(glm::X, glm::W, glm::X, glm::Z)
-00706 #define garb swizzle(glm::Y, glm::W, glm::X, glm::Z)
-00707 #define barb swizzle(glm::Z, glm::W, glm::X, glm::Z)
-00708 #define aarb swizzle(glm::W, glm::W, glm::X, glm::Z)
-00709 #define rrgb swizzle(glm::X, glm::X, glm::Y, glm::Z)
-00710 #define grgb swizzle(glm::Y, glm::X, glm::Y, glm::Z)
-00711 #define brgb swizzle(glm::Z, glm::X, glm::Y, glm::Z)
-00712 #define argb swizzle(glm::W, glm::X, glm::Y, glm::Z)
-00713 #define rggb swizzle(glm::X, glm::Y, glm::Y, glm::Z)
-00714 #define gggb swizzle(glm::Y, glm::Y, glm::Y, glm::Z)
-00715 #define bggb swizzle(glm::Z, glm::Y, glm::Y, glm::Z)
-00716 #define aggb swizzle(glm::W, glm::Y, glm::Y, glm::Z)
-00717 #define rbgb swizzle(glm::X, glm::Z, glm::Y, glm::Z)
-00718 #define gbgb swizzle(glm::Y, glm::Z, glm::Y, glm::Z)
-00719 #define bbgb swizzle(glm::Z, glm::Z, glm::Y, glm::Z)
-00720 #define abgb swizzle(glm::W, glm::Z, glm::Y, glm::Z)
-00721 #define ragb swizzle(glm::X, glm::W, glm::Y, glm::Z)
-00722 #define gagb swizzle(glm::Y, glm::W, glm::Y, glm::Z)
-00723 #define bagb swizzle(glm::Z, glm::W, glm::Y, glm::Z)
-00724 #define aagb swizzle(glm::W, glm::W, glm::Y, glm::Z)
-00725 #define rrbb swizzle(glm::X, glm::X, glm::Z, glm::Z)
-00726 #define grbb swizzle(glm::Y, glm::X, glm::Z, glm::Z)
-00727 #define brbb swizzle(glm::Z, glm::X, glm::Z, glm::Z)
-00728 #define arbb swizzle(glm::W, glm::X, glm::Z, glm::Z)
-00729 #define rgbb swizzle(glm::X, glm::Y, glm::Z, glm::Z)
-00730 #define ggbb swizzle(glm::Y, glm::Y, glm::Z, glm::Z)
-00731 #define bgbb swizzle(glm::Z, glm::Y, glm::Z, glm::Z)
-00732 #define agbb swizzle(glm::W, glm::Y, glm::Z, glm::Z)
-00733 #define rbbb swizzle(glm::X, glm::Z, glm::Z, glm::Z)
-00734 #define gbbb swizzle(glm::Y, glm::Z, glm::Z, glm::Z)
-00735 #define bbbb swizzle(glm::Z, glm::Z, glm::Z, glm::Z)
-00736 #define abbb swizzle(glm::W, glm::Z, glm::Z, glm::Z)
-00737 #define rabb swizzle(glm::X, glm::W, glm::Z, glm::Z)
-00738 #define gabb swizzle(glm::Y, glm::W, glm::Z, glm::Z)
-00739 #define babb swizzle(glm::Z, glm::W, glm::Z, glm::Z)
-00740 #define aabb swizzle(glm::W, glm::W, glm::Z, glm::Z)
-00741 #define rrab swizzle(glm::X, glm::X, glm::W, glm::Z)
-00742 #define grab swizzle(glm::Y, glm::X, glm::W, glm::Z)
-00743 #define brab swizzle(glm::Z, glm::X, glm::W, glm::Z)
-00744 #define arab swizzle(glm::W, glm::X, glm::W, glm::Z)
-00745 #define rgab swizzle(glm::X, glm::Y, glm::W, glm::Z)
-00746 #define ggab swizzle(glm::Y, glm::Y, glm::W, glm::Z)
-00747 #define bgab swizzle(glm::Z, glm::Y, glm::W, glm::Z)
-00748 #define agab swizzle(glm::W, glm::Y, glm::W, glm::Z)
-00749 #define rbab swizzle(glm::X, glm::Z, glm::W, glm::Z)
-00750 #define gbab swizzle(glm::Y, glm::Z, glm::W, glm::Z)
-00751 #define bbab swizzle(glm::Z, glm::Z, glm::W, glm::Z)
-00752 #define abab swizzle(glm::W, glm::Z, glm::W, glm::Z)
-00753 #define raab swizzle(glm::X, glm::W, glm::W, glm::Z)
-00754 #define gaab swizzle(glm::Y, glm::W, glm::W, glm::Z)
-00755 #define baab swizzle(glm::Z, glm::W, glm::W, glm::Z)
-00756 #define aaab swizzle(glm::W, glm::W, glm::W, glm::Z)
-00757 #define rrra swizzle(glm::X, glm::X, glm::X, glm::W)
-00758 #define grra swizzle(glm::Y, glm::X, glm::X, glm::W)
-00759 #define brra swizzle(glm::Z, glm::X, glm::X, glm::W)
-00760 #define arra swizzle(glm::W, glm::X, glm::X, glm::W)
-00761 #define rgra swizzle(glm::X, glm::Y, glm::X, glm::W)
-00762 #define ggra swizzle(glm::Y, glm::Y, glm::X, glm::W)
-00763 #define bgra swizzle(glm::Z, glm::Y, glm::X, glm::W)
-00764 #define agra swizzle(glm::W, glm::Y, glm::X, glm::W)
-00765 #define rbra swizzle(glm::X, glm::Z, glm::X, glm::W)
-00766 #define gbra swizzle(glm::Y, glm::Z, glm::X, glm::W)
-00767 #define bbra swizzle(glm::Z, glm::Z, glm::X, glm::W)
-00768 #define abra swizzle(glm::W, glm::Z, glm::X, glm::W)
-00769 #define rara swizzle(glm::X, glm::W, glm::X, glm::W)
-00770 #define gara swizzle(glm::Y, glm::W, glm::X, glm::W)
-00771 #define bara swizzle(glm::Z, glm::W, glm::X, glm::W)
-00772 #define aara swizzle(glm::W, glm::W, glm::X, glm::W)
-00773 #define rrga swizzle(glm::X, glm::X, glm::Y, glm::W)
-00774 #define grga swizzle(glm::Y, glm::X, glm::Y, glm::W)
-00775 #define brga swizzle(glm::Z, glm::X, glm::Y, glm::W)
-00776 #define arga swizzle(glm::W, glm::X, glm::Y, glm::W)
-00777 #define rgga swizzle(glm::X, glm::Y, glm::Y, glm::W)
-00778 #define ggga swizzle(glm::Y, glm::Y, glm::Y, glm::W)
-00779 #define bgga swizzle(glm::Z, glm::Y, glm::Y, glm::W)
-00780 #define agga swizzle(glm::W, glm::Y, glm::Y, glm::W)
-00781 #define rbga swizzle(glm::X, glm::Z, glm::Y, glm::W)
-00782 #define gbga swizzle(glm::Y, glm::Z, glm::Y, glm::W)
-00783 #define bbga swizzle(glm::Z, glm::Z, glm::Y, glm::W)
-00784 #define abga swizzle(glm::W, glm::Z, glm::Y, glm::W)
-00785 #define raga swizzle(glm::X, glm::W, glm::Y, glm::W)
-00786 #define gaga swizzle(glm::Y, glm::W, glm::Y, glm::W)
-00787 #define baga swizzle(glm::Z, glm::W, glm::Y, glm::W)
-00788 #define aaga swizzle(glm::W, glm::W, glm::Y, glm::W)
-00789 #define rrba swizzle(glm::X, glm::X, glm::Z, glm::W)
-00790 #define grba swizzle(glm::Y, glm::X, glm::Z, glm::W)
-00791 #define brba swizzle(glm::Z, glm::X, glm::Z, glm::W)
-00792 #define arba swizzle(glm::W, glm::X, glm::Z, glm::W)
-00793 #define rgba swizzle(glm::X, glm::Y, glm::Z, glm::W)
-00794 #define ggba swizzle(glm::Y, glm::Y, glm::Z, glm::W)
-00795 #define bgba swizzle(glm::Z, glm::Y, glm::Z, glm::W)
-00796 #define agba swizzle(glm::W, glm::Y, glm::Z, glm::W)
-00797 #define rbba swizzle(glm::X, glm::Z, glm::Z, glm::W)
-00798 #define gbba swizzle(glm::Y, glm::Z, glm::Z, glm::W)
-00799 #define bbba swizzle(glm::Z, glm::Z, glm::Z, glm::W)
-00800 #define abba swizzle(glm::W, glm::Z, glm::Z, glm::W)
-00801 #define raba swizzle(glm::X, glm::W, glm::Z, glm::W)
-00802 #define gaba swizzle(glm::Y, glm::W, glm::Z, glm::W)
-00803 #define baba swizzle(glm::Z, glm::W, glm::Z, glm::W)
-00804 #define aaba swizzle(glm::W, glm::W, glm::Z, glm::W)
-00805 #define rraa swizzle(glm::X, glm::X, glm::W, glm::W)
-00806 #define graa swizzle(glm::Y, glm::X, glm::W, glm::W)
-00807 #define braa swizzle(glm::Z, glm::X, glm::W, glm::W)
-00808 #define araa swizzle(glm::W, glm::X, glm::W, glm::W)
-00809 #define rgaa swizzle(glm::X, glm::Y, glm::W, glm::W)
-00810 #define ggaa swizzle(glm::Y, glm::Y, glm::W, glm::W)
-00811 #define bgaa swizzle(glm::Z, glm::Y, glm::W, glm::W)
-00812 #define agaa swizzle(glm::W, glm::Y, glm::W, glm::W)
-00813 #define rbaa swizzle(glm::X, glm::Z, glm::W, glm::W)
-00814 #define gbaa swizzle(glm::Y, glm::Z, glm::W, glm::W)
-00815 #define bbaa swizzle(glm::Z, glm::Z, glm::W, glm::W)
-00816 #define abaa swizzle(glm::W, glm::Z, glm::W, glm::W)
-00817 #define raaa swizzle(glm::X, glm::W, glm::W, glm::W)
-00818 #define gaaa swizzle(glm::Y, glm::W, glm::W, glm::W)
-00819 #define baaa swizzle(glm::Z, glm::W, glm::W, glm::W)
-00820 #define aaaa swizzle(glm::W, glm::W, glm::W, glm::W)
-00821 
-00822 #endif
-00823 
-00824 #if(defined(GLM_FORCE_SWIZZLE_STPQ) || defined(GLM_SWIZZLE))
-00825 
-00826 #define ssss swizzle(glm::X, glm::X, glm::X, glm::X)
-00827 #define tsss swizzle(glm::Y, glm::X, glm::X, glm::X)
-00828 #define psss swizzle(glm::Z, glm::X, glm::X, glm::X)
-00829 #define qsss swizzle(glm::W, glm::X, glm::X, glm::X)
-00830 #define stss swizzle(glm::X, glm::Y, glm::X, glm::X)
-00831 #define ttss swizzle(glm::Y, glm::Y, glm::X, glm::X)
-00832 #define ptss swizzle(glm::Z, glm::Y, glm::X, glm::X)
-00833 #define qtss swizzle(glm::W, glm::Y, glm::X, glm::X)
-00834 #define spss swizzle(glm::X, glm::Z, glm::X, glm::X)
-00835 #define tpss swizzle(glm::Y, glm::Z, glm::X, glm::X)
-00836 #define ppss swizzle(glm::Z, glm::Z, glm::X, glm::X)
-00837 #define qpss swizzle(glm::W, glm::Z, glm::X, glm::X)
-00838 #define sqss swizzle(glm::X, glm::W, glm::X, glm::X)
-00839 #define tqss swizzle(glm::Y, glm::W, glm::X, glm::X)
-00840 #define pqss swizzle(glm::Z, glm::W, glm::X, glm::X)
-00841 #define qqss swizzle(glm::W, glm::W, glm::X, glm::X)
-00842 #define ssts swizzle(glm::X, glm::X, glm::Y, glm::X)
-00843 #define tsts swizzle(glm::Y, glm::X, glm::Y, glm::X)
-00844 #define psts swizzle(glm::Z, glm::X, glm::Y, glm::X)
-00845 #define qsts swizzle(glm::W, glm::X, glm::Y, glm::X)
-00846 #define stts swizzle(glm::X, glm::Y, glm::Y, glm::X)
-00847 #define ttts swizzle(glm::Y, glm::Y, glm::Y, glm::X)
-00848 #define ptts swizzle(glm::Z, glm::Y, glm::Y, glm::X)
-00849 #define qtts swizzle(glm::W, glm::Y, glm::Y, glm::X)
-00850 #define spts swizzle(glm::X, glm::Z, glm::Y, glm::X)
-00851 #define tpts swizzle(glm::Y, glm::Z, glm::Y, glm::X)
-00852 #define ppts swizzle(glm::Z, glm::Z, glm::Y, glm::X)
-00853 #define qpts swizzle(glm::W, glm::Z, glm::Y, glm::X)
-00854 #define sqts swizzle(glm::X, glm::W, glm::Y, glm::X)
-00855 #define tqts swizzle(glm::Y, glm::W, glm::Y, glm::X)
-00856 #define pqts swizzle(glm::Z, glm::W, glm::Y, glm::X)
-00857 #define qqts swizzle(glm::W, glm::W, glm::Y, glm::X)
-00858 #define ssps swizzle(glm::X, glm::X, glm::Z, glm::X)
-00859 #define tsps swizzle(glm::Y, glm::X, glm::Z, glm::X)
-00860 #define psps swizzle(glm::Z, glm::X, glm::Z, glm::X)
-00861 #define qsps swizzle(glm::W, glm::X, glm::Z, glm::X)
-00862 #define stps swizzle(glm::X, glm::Y, glm::Z, glm::X)
-00863 #define ttps swizzle(glm::Y, glm::Y, glm::Z, glm::X)
-00864 #define ptps swizzle(glm::Z, glm::Y, glm::Z, glm::X)
-00865 #define qtps swizzle(glm::W, glm::Y, glm::Z, glm::X)
-00866 #define spps swizzle(glm::X, glm::Z, glm::Z, glm::X)
-00867 #define tpps swizzle(glm::Y, glm::Z, glm::Z, glm::X)
-00868 #define ppps swizzle(glm::Z, glm::Z, glm::Z, glm::X)
-00869 #define qpps swizzle(glm::W, glm::Z, glm::Z, glm::X)
-00870 #define sqps swizzle(glm::X, glm::W, glm::Z, glm::X)
-00871 #define tqps swizzle(glm::Y, glm::W, glm::Z, glm::X)
-00872 #define pqps swizzle(glm::Z, glm::W, glm::Z, glm::X)
-00873 #define qqps swizzle(glm::W, glm::W, glm::Z, glm::X)
-00874 #define ssqs swizzle(glm::X, glm::X, glm::W, glm::X)
-00875 #define tsqs swizzle(glm::Y, glm::X, glm::W, glm::X)
-00876 #define psqs swizzle(glm::Z, glm::X, glm::W, glm::X)
-00877 #define qsqs swizzle(glm::W, glm::X, glm::W, glm::X)
-00878 #define stqs swizzle(glm::X, glm::Y, glm::W, glm::X)
-00879 #define ttqs swizzle(glm::Y, glm::Y, glm::W, glm::X)
-00880 #define ptqs swizzle(glm::Z, glm::Y, glm::W, glm::X)
-00881 #define qtqs swizzle(glm::W, glm::Y, glm::W, glm::X)
-00882 #define spqs swizzle(glm::X, glm::Z, glm::W, glm::X)
-00883 #define tpqs swizzle(glm::Y, glm::Z, glm::W, glm::X)
-00884 #define ppqs swizzle(glm::Z, glm::Z, glm::W, glm::X)
-00885 #define qpqs swizzle(glm::W, glm::Z, glm::W, glm::X)
-00886 #define sqqs swizzle(glm::X, glm::W, glm::W, glm::X)
-00887 #define tqqs swizzle(glm::Y, glm::W, glm::W, glm::X)
-00888 #define pqqs swizzle(glm::Z, glm::W, glm::W, glm::X)
-00889 #define qqqs swizzle(glm::W, glm::W, glm::W, glm::X)
-00890 #define ssst swizzle(glm::X, glm::X, glm::X, glm::Y)
-00891 #define tsst swizzle(glm::Y, glm::X, glm::X, glm::Y)
-00892 #define psst swizzle(glm::Z, glm::X, glm::X, glm::Y)
-00893 #define qsst swizzle(glm::W, glm::X, glm::X, glm::Y)
-00894 #define stst swizzle(glm::X, glm::Y, glm::X, glm::Y)
-00895 #define ttst swizzle(glm::Y, glm::Y, glm::X, glm::Y)
-00896 #define ptst swizzle(glm::Z, glm::Y, glm::X, glm::Y)
-00897 #define qtst swizzle(glm::W, glm::Y, glm::X, glm::Y)
-00898 #define spst swizzle(glm::X, glm::Z, glm::X, glm::Y)
-00899 #define tpst swizzle(glm::Y, glm::Z, glm::X, glm::Y)
-00900 #define ppst swizzle(glm::Z, glm::Z, glm::X, glm::Y)
-00901 #define qpst swizzle(glm::W, glm::Z, glm::X, glm::Y)
-00902 #define sqst swizzle(glm::X, glm::W, glm::X, glm::Y)
-00903 #define tqst swizzle(glm::Y, glm::W, glm::X, glm::Y)
-00904 #define pqst swizzle(glm::Z, glm::W, glm::X, glm::Y)
-00905 #define qqst swizzle(glm::W, glm::W, glm::X, glm::Y)
-00906 #define sstt swizzle(glm::X, glm::X, glm::Y, glm::Y)
-00907 #define tstt swizzle(glm::Y, glm::X, glm::Y, glm::Y)
-00908 #define pstt swizzle(glm::Z, glm::X, glm::Y, glm::Y)
-00909 #define qstt swizzle(glm::W, glm::X, glm::Y, glm::Y)
-00910 #define sttt swizzle(glm::X, glm::Y, glm::Y, glm::Y)
-00911 #define tttt swizzle(glm::Y, glm::Y, glm::Y, glm::Y)
-00912 #define pttt swizzle(glm::Z, glm::Y, glm::Y, glm::Y)
-00913 #define qttt swizzle(glm::W, glm::Y, glm::Y, glm::Y)
-00914 #define sptt swizzle(glm::X, glm::Z, glm::Y, glm::Y)
-00915 #define tptt swizzle(glm::Y, glm::Z, glm::Y, glm::Y)
-00916 #define pptt swizzle(glm::Z, glm::Z, glm::Y, glm::Y)
-00917 #define qptt swizzle(glm::W, glm::Z, glm::Y, glm::Y)
-00918 #define sqtt swizzle(glm::X, glm::W, glm::Y, glm::Y)
-00919 #define tqtt swizzle(glm::Y, glm::W, glm::Y, glm::Y)
-00920 #define pqtt swizzle(glm::Z, glm::W, glm::Y, glm::Y)
-00921 #define qqtt swizzle(glm::W, glm::W, glm::Y, glm::Y)
-00922 #define sspt swizzle(glm::X, glm::X, glm::Z, glm::Y)
-00923 #define tspt swizzle(glm::Y, glm::X, glm::Z, glm::Y)
-00924 #define pspt swizzle(glm::Z, glm::X, glm::Z, glm::Y)
-00925 #define qspt swizzle(glm::W, glm::X, glm::Z, glm::Y)
-00926 #define stpt swizzle(glm::X, glm::Y, glm::Z, glm::Y)
-00927 #define ttpt swizzle(glm::Y, glm::Y, glm::Z, glm::Y)
-00928 #define ptpt swizzle(glm::Z, glm::Y, glm::Z, glm::Y)
-00929 #define qtpt swizzle(glm::W, glm::Y, glm::Z, glm::Y)
-00930 #define sppt swizzle(glm::X, glm::Z, glm::Z, glm::Y)
-00931 #define tppt swizzle(glm::Y, glm::Z, glm::Z, glm::Y)
-00932 #define pppt swizzle(glm::Z, glm::Z, glm::Z, glm::Y)
-00933 #define qppt swizzle(glm::W, glm::Z, glm::Z, glm::Y)
-00934 #define sqpt swizzle(glm::X, glm::W, glm::Z, glm::Y)
-00935 #define tqpt swizzle(glm::Y, glm::W, glm::Z, glm::Y)
-00936 #define pqpt swizzle(glm::Z, glm::W, glm::Z, glm::Y)
-00937 #define qqpt swizzle(glm::W, glm::W, glm::Z, glm::Y)
-00938 #define ssqt swizzle(glm::X, glm::X, glm::W, glm::Y)
-00939 #define tsqt swizzle(glm::Y, glm::X, glm::W, glm::Y)
-00940 #define psqt swizzle(glm::Z, glm::X, glm::W, glm::Y)
-00941 #define qsqt swizzle(glm::W, glm::X, glm::W, glm::Y)
-00942 #define stqt swizzle(glm::X, glm::Y, glm::W, glm::Y)
-00943 #define ttqt swizzle(glm::Y, glm::Y, glm::W, glm::Y)
-00944 #define ptqt swizzle(glm::Z, glm::Y, glm::W, glm::Y)
-00945 #define qtqt swizzle(glm::W, glm::Y, glm::W, glm::Y)
-00946 #define spqt swizzle(glm::X, glm::Z, glm::W, glm::Y)
-00947 #define tpqt swizzle(glm::Y, glm::Z, glm::W, glm::Y)
-00948 #define ppqt swizzle(glm::Z, glm::Z, glm::W, glm::Y)
-00949 #define qpqt swizzle(glm::W, glm::Z, glm::W, glm::Y)
-00950 #define sqqt swizzle(glm::X, glm::W, glm::W, glm::Y)
-00951 #define tqqt swizzle(glm::Y, glm::W, glm::W, glm::Y)
-00952 #define pqqt swizzle(glm::Z, glm::W, glm::W, glm::Y)
-00953 #define qqqt swizzle(glm::W, glm::W, glm::W, glm::Y)
-00954 #define sssp swizzle(glm::X, glm::X, glm::X, glm::Z)
-00955 #define tssp swizzle(glm::Y, glm::X, glm::X, glm::Z)
-00956 #define pssp swizzle(glm::Z, glm::X, glm::X, glm::Z)
-00957 #define qssp swizzle(glm::W, glm::X, glm::X, glm::Z)
-00958 #define stsp swizzle(glm::X, glm::Y, glm::X, glm::Z)
-00959 #define ttsp swizzle(glm::Y, glm::Y, glm::X, glm::Z)
-00960 #define ptsp swizzle(glm::Z, glm::Y, glm::X, glm::Z)
-00961 #define qtsp swizzle(glm::W, glm::Y, glm::X, glm::Z)
-00962 #define spsp swizzle(glm::X, glm::Z, glm::X, glm::Z)
-00963 #define tpsp swizzle(glm::Y, glm::Z, glm::X, glm::Z)
-00964 #define ppsp swizzle(glm::Z, glm::Z, glm::X, glm::Z)
-00965 #define qpsp swizzle(glm::W, glm::Z, glm::X, glm::Z)
-00966 #define sqsp swizzle(glm::X, glm::W, glm::X, glm::Z)
-00967 #define tqsp swizzle(glm::Y, glm::W, glm::X, glm::Z)
-00968 #define pqsp swizzle(glm::Z, glm::W, glm::X, glm::Z)
-00969 #define qqsp swizzle(glm::W, glm::W, glm::X, glm::Z)
-00970 #define sstp swizzle(glm::X, glm::X, glm::Y, glm::Z)
-00971 #define tstp swizzle(glm::Y, glm::X, glm::Y, glm::Z)
-00972 #define pstp swizzle(glm::Z, glm::X, glm::Y, glm::Z)
-00973 #define qstp swizzle(glm::W, glm::X, glm::Y, glm::Z)
-00974 #define sttp swizzle(glm::X, glm::Y, glm::Y, glm::Z)
-00975 #define tttp swizzle(glm::Y, glm::Y, glm::Y, glm::Z)
-00976 #define pttp swizzle(glm::Z, glm::Y, glm::Y, glm::Z)
-00977 #define qttp swizzle(glm::W, glm::Y, glm::Y, glm::Z)
-00978 #define sptp swizzle(glm::X, glm::Z, glm::Y, glm::Z)
-00979 #define tptp swizzle(glm::Y, glm::Z, glm::Y, glm::Z)
-00980 #define pptp swizzle(glm::Z, glm::Z, glm::Y, glm::Z)
-00981 #define qptp swizzle(glm::W, glm::Z, glm::Y, glm::Z)
-00982 #define sqtp swizzle(glm::X, glm::W, glm::Y, glm::Z)
-00983 #define tqtp swizzle(glm::Y, glm::W, glm::Y, glm::Z)
-00984 #define pqtp swizzle(glm::Z, glm::W, glm::Y, glm::Z)
-00985 #define qqtp swizzle(glm::W, glm::W, glm::Y, glm::Z)
-00986 #define sspp swizzle(glm::X, glm::X, glm::Z, glm::Z)
-00987 #define tspp swizzle(glm::Y, glm::X, glm::Z, glm::Z)
-00988 #define pspp swizzle(glm::Z, glm::X, glm::Z, glm::Z)
-00989 #define qspp swizzle(glm::W, glm::X, glm::Z, glm::Z)
-00990 #define stpp swizzle(glm::X, glm::Y, glm::Z, glm::Z)
-00991 #define ttpp swizzle(glm::Y, glm::Y, glm::Z, glm::Z)
-00992 #define ptpp swizzle(glm::Z, glm::Y, glm::Z, glm::Z)
-00993 #define qtpp swizzle(glm::W, glm::Y, glm::Z, glm::Z)
-00994 #define sppp swizzle(glm::X, glm::Z, glm::Z, glm::Z)
-00995 #define tppp swizzle(glm::Y, glm::Z, glm::Z, glm::Z)
-00996 #define pppp swizzle(glm::Z, glm::Z, glm::Z, glm::Z)
-00997 #define qppp swizzle(glm::W, glm::Z, glm::Z, glm::Z)
-00998 #define sqpp swizzle(glm::X, glm::W, glm::Z, glm::Z)
-00999 #define tqpp swizzle(glm::Y, glm::W, glm::Z, glm::Z)
-01000 #define pqpp swizzle(glm::Z, glm::W, glm::Z, glm::Z)
-01001 #define qqpp swizzle(glm::W, glm::W, glm::Z, glm::Z)
-01002 #define ssqp swizzle(glm::X, glm::X, glm::W, glm::Z)
-01003 #define tsqp swizzle(glm::Y, glm::X, glm::W, glm::Z)
-01004 #define psqp swizzle(glm::Z, glm::X, glm::W, glm::Z)
-01005 #define qsqp swizzle(glm::W, glm::X, glm::W, glm::Z)
-01006 #define stqp swizzle(glm::X, glm::Y, glm::W, glm::Z)
-01007 #define ttqp swizzle(glm::Y, glm::Y, glm::W, glm::Z)
-01008 #define ptqp swizzle(glm::Z, glm::Y, glm::W, glm::Z)
-01009 #define qtqp swizzle(glm::W, glm::Y, glm::W, glm::Z)
-01010 #define spqp swizzle(glm::X, glm::Z, glm::W, glm::Z)
-01011 #define tpqp swizzle(glm::Y, glm::Z, glm::W, glm::Z)
-01012 #define ppqp swizzle(glm::Z, glm::Z, glm::W, glm::Z)
-01013 #define qpqp swizzle(glm::W, glm::Z, glm::W, glm::Z)
-01014 #define sqqp swizzle(glm::X, glm::W, glm::W, glm::Z)
-01015 #define tqqp swizzle(glm::Y, glm::W, glm::W, glm::Z)
-01016 #define pqqp swizzle(glm::Z, glm::W, glm::W, glm::Z)
-01017 #define qqqp swizzle(glm::W, glm::W, glm::W, glm::Z)
-01018 #define sssq swizzle(glm::X, glm::X, glm::X, glm::W)
-01019 #define tssq swizzle(glm::Y, glm::X, glm::X, glm::W)
-01020 #define pssq swizzle(glm::Z, glm::X, glm::X, glm::W)
-01021 #define qssq swizzle(glm::W, glm::X, glm::X, glm::W)
-01022 #define stsq swizzle(glm::X, glm::Y, glm::X, glm::W)
-01023 #define ttsq swizzle(glm::Y, glm::Y, glm::X, glm::W)
-01024 #define ptsq swizzle(glm::Z, glm::Y, glm::X, glm::W)
-01025 #define qtsq swizzle(glm::W, glm::Y, glm::X, glm::W)
-01026 #define spsq swizzle(glm::X, glm::Z, glm::X, glm::W)
-01027 #define tpsq swizzle(glm::Y, glm::Z, glm::X, glm::W)
-01028 #define ppsq swizzle(glm::Z, glm::Z, glm::X, glm::W)
-01029 #define qpsq swizzle(glm::W, glm::Z, glm::X, glm::W)
-01030 #define sqsq swizzle(glm::X, glm::W, glm::X, glm::W)
-01031 #define tqsq swizzle(glm::Y, glm::W, glm::X, glm::W)
-01032 #define pqsq swizzle(glm::Z, glm::W, glm::X, glm::W)
-01033 #define qqsq swizzle(glm::W, glm::W, glm::X, glm::W)
-01034 #define sstq swizzle(glm::X, glm::X, glm::Y, glm::W)
-01035 #define tstq swizzle(glm::Y, glm::X, glm::Y, glm::W)
-01036 #define pstq swizzle(glm::Z, glm::X, glm::Y, glm::W)
-01037 #define qstq swizzle(glm::W, glm::X, glm::Y, glm::W)
-01038 #define sttq swizzle(glm::X, glm::Y, glm::Y, glm::W)
-01039 #define tttq swizzle(glm::Y, glm::Y, glm::Y, glm::W)
-01040 #define pttq swizzle(glm::Z, glm::Y, glm::Y, glm::W)
-01041 #define qttq swizzle(glm::W, glm::Y, glm::Y, glm::W)
-01042 #define sptq swizzle(glm::X, glm::Z, glm::Y, glm::W)
-01043 #define tptq swizzle(glm::Y, glm::Z, glm::Y, glm::W)
-01044 #define pptq swizzle(glm::Z, glm::Z, glm::Y, glm::W)
-01045 #define qptq swizzle(glm::W, glm::Z, glm::Y, glm::W)
-01046 #define sqtq swizzle(glm::X, glm::W, glm::Y, glm::W)
-01047 #define tqtq swizzle(glm::Y, glm::W, glm::Y, glm::W)
-01048 #define pqtq swizzle(glm::Z, glm::W, glm::Y, glm::W)
-01049 #define qqtq swizzle(glm::W, glm::W, glm::Y, glm::W)
-01050 #define sspq swizzle(glm::X, glm::X, glm::Z, glm::W)
-01051 #define tspq swizzle(glm::Y, glm::X, glm::Z, glm::W)
-01052 #define pspq swizzle(glm::Z, glm::X, glm::Z, glm::W)
-01053 #define qspq swizzle(glm::W, glm::X, glm::Z, glm::W)
-01054 #define stpq swizzle(glm::X, glm::Y, glm::Z, glm::W)
-01055 #define ttpq swizzle(glm::Y, glm::Y, glm::Z, glm::W)
-01056 #define ptpq swizzle(glm::Z, glm::Y, glm::Z, glm::W)
-01057 #define qtpq swizzle(glm::W, glm::Y, glm::Z, glm::W)
-01058 #define sppq swizzle(glm::X, glm::Z, glm::Z, glm::W)
-01059 #define tppq swizzle(glm::Y, glm::Z, glm::Z, glm::W)
-01060 #define pppq swizzle(glm::Z, glm::Z, glm::Z, glm::W)
-01061 #define qppq swizzle(glm::W, glm::Z, glm::Z, glm::W)
-01062 #define sqpq swizzle(glm::X, glm::W, glm::Z, glm::W)
-01063 #define tqpq swizzle(glm::Y, glm::W, glm::Z, glm::W)
-01064 #define pqpq swizzle(glm::Z, glm::W, glm::Z, glm::W)
-01065 #define qqpq swizzle(glm::W, glm::W, glm::Z, glm::W)
-01066 #define ssqq swizzle(glm::X, glm::X, glm::W, glm::W)
-01067 #define tsqq swizzle(glm::Y, glm::X, glm::W, glm::W)
-01068 #define psqq swizzle(glm::Z, glm::X, glm::W, glm::W)
-01069 #define qsqq swizzle(glm::W, glm::X, glm::W, glm::W)
-01070 #define stqq swizzle(glm::X, glm::Y, glm::W, glm::W)
-01071 #define ttqq swizzle(glm::Y, glm::Y, glm::W, glm::W)
-01072 #define ptqq swizzle(glm::Z, glm::Y, glm::W, glm::W)
-01073 #define qtqq swizzle(glm::W, glm::Y, glm::W, glm::W)
-01074 #define spqq swizzle(glm::X, glm::Z, glm::W, glm::W)
-01075 #define tpqq swizzle(glm::Y, glm::Z, glm::W, glm::W)
-01076 #define ppqq swizzle(glm::Z, glm::Z, glm::W, glm::W)
-01077 #define qpqq swizzle(glm::W, glm::Z, glm::W, glm::W)
-01078 #define sqqq swizzle(glm::X, glm::W, glm::W, glm::W)
-01079 #define tqqq swizzle(glm::Y, glm::W, glm::W, glm::W)
-01080 #define pqqq swizzle(glm::Z, glm::W, glm::W, glm::W)
-01081 #define qqqq swizzle(glm::W, glm::W, glm::W, glm::W)
-01082 
-01083 #endif
-01084 
-01085 #endif//glm_core_swizzle
-
-
- - - diff --git a/doc/api-0.9.2/a00026_source.html b/doc/api-0.9.2/a00026_source.html deleted file mode 100644 index d0b29a18..00000000 --- a/doc/api-0.9.2/a00026_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -associated_min_max.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
associated_min_max.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-03-10
-00005 // Updated : 2008-03-15
-00006 // Licence : This source is under MIT License
-00007 // File    : gtx_associated_min_max.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_extented_min_max
-00013 
-00014 #ifndef glm_gtx_associated_min_max
-00015 #define glm_gtx_associated_min_max
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_associated_min_max extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace associated_min_max 
-00027 {
-00030 
-00032         template<typename genTypeT, typename genTypeU>
-00033         genTypeU associatedMin(
-00034                 const genTypeT& x, const genTypeU& a, 
-00035                 const genTypeT& y, const genTypeU& b);
-00036 
-00038         template<typename genTypeT, typename genTypeU>
-00039         genTypeU associatedMin(
-00040                 const genTypeT& x, const genTypeU& a, 
-00041                 const genTypeT& y, const genTypeU& b, 
-00042                 const genTypeT& z, const genTypeU& c);
-00043 
-00045         template<typename genTypeT, typename genTypeU>
-00046         genTypeU associatedMin(
-00047                 const genTypeT& x, const genTypeU& a, 
-00048                 const genTypeT& y, const genTypeU& b, 
-00049                 const genTypeT& z, const genTypeU& c, 
-00050                 const genTypeT& w, const genTypeU& d);
-00051 
-00053         template<typename genTypeT, typename genTypeU>
-00054         genTypeU associatedMax(
-00055                 const genTypeT& x, const genTypeU& a, 
-00056                 const genTypeT& y, const genTypeU& b);
-00057 
-00059         template<typename genTypeT, typename genTypeU>
-00060         genTypeU associatedMax(
-00061                 const genTypeT& x, const genTypeU& a, 
-00062                 const genTypeT& y, const genTypeU& b, 
-00063                 const genTypeT& z, const genTypeU& c);
-00064 
-00066         template<typename genTypeT, typename genTypeU>
-00067         genTypeU associatedMax(
-00068                 const genTypeT& x, const genTypeU& a, 
-00069                 const genTypeT& y, const genTypeU& b, 
-00070                 const genTypeT& z, const genTypeU& c, 
-00071                 const genTypeT& w, const genTypeU& d);
-00072 
-00074 } //namespace associated_min_max
-00075 } //namespace gtx
-00076 } //namespace glm
-00077 
-00078 #include "associated_min_max.inl"
-00079 
-00080 namespace glm{using namespace gtx::associated_min_max;}
-00081 
-00082 #endif//glm_gtx_associated_min_max
-
-
- - - diff --git a/doc/api-0.9.2/a00027_source.html b/doc/api-0.9.2/a00027_source.html deleted file mode 100644 index d2e0fc99..00000000 --- a/doc/api-0.9.2/a00027_source.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - -bit.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
bit.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-03-14
-00005 // Updated : 2008-11-14
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/bit.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half_float
-00013 
-00014 #ifndef glm_gtx_bit
-00015 #define glm_gtx_bit
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtc/half_float.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_bit extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace bit 
-00028 {
-00029         using namespace gtc::half_float;
-00030 
-00033 
-00036         template <typename genIType>
-00037         genIType mask(genIType const & count);
-00038 
-00042         template <typename genIUType, typename sizeType>
-00043         genIUType extractField(
-00044                 genIUType const & v, 
-00045                 sizeType const & first, 
-00046                 sizeType const & count);
-00047 
-00050         template <typename genType> 
-00051         int lowestBit(genType const & value);
-00052 
-00055         template <typename genType> 
-00056         int highestBit(genType const & value);
-00057 
-00060         template <typename genType> 
-00061         genType highestBitValue(genType const & value);
-00062 
-00065         template <typename genType> 
-00066         bool isPowerOfTwo(genType const & value);
-00067 
-00070         template <typename genType> 
-00071         genType powerOfTwoAbove(genType const & value);
-00072 
-00075         template <typename genType> 
-00076         genType powerOfTwoBelow(genType const & value);
-00077 
-00080         template <typename genType> 
-00081         genType powerOfTwoNearest(genType const & value);
-00082 
-00085         template <typename genType> 
-00086         genType bitRevert(genType const & value);
-00087 
-00090         template <typename genType>
-00091         genType bitRotateRight(genType const & In, std::size_t Shift);
-00092 
-00095         template <typename genType>
-00096         genType bitRotateLeft(genType const & In, std::size_t Shift);
-00097 
-00099 }//namespace bit
-00100 }//namespace gtx
-00101 }//namespace glm
-00102 
-00103 #include "bit.inl"
-00104 
-00105 namespace glm{using namespace gtx::bit;}
-00106 
-00107 #endif//glm_gtx_bit
-
-
- - - diff --git a/doc/api-0.9.2/a00028_source.html b/doc/api-0.9.2/a00028_source.html deleted file mode 100644 index 128949f4..00000000 --- a/doc/api-0.9.2/a00028_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -closest_point.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
closest_point.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-30
-00005 // Updated : 2008-10-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/closest_point.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_closest_point
-00014 #define glm_gtx_closest_point
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_closest_point extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace closest_point 
-00026 {
-00029 
-00032         template <typename T> 
-00033         detail::tvec3<T> closestPointOnLine(
-00034                 detail::tvec3<T> const & point, 
-00035                 detail::tvec3<T> const & a, 
-00036                 detail::tvec3<T> const & b);
-00037 
-00039 }// namespace closest_point
-00040 }// namespace gtx
-00041 }// namespace glm
-00042 
-00043 #include "closest_point.inl"
-00044 
-00045 namespace glm{using namespace gtx::closest_point;}
-00046 
-00047 #endif//glm_gtx_closest_point
-
-
- - - diff --git a/doc/api-0.9.2/a00029_source.html b/doc/api-0.9.2/a00029_source.html deleted file mode 100644 index 5d7c0a28..00000000 --- a/doc/api-0.9.2/a00029_source.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - -color_cast.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
color_cast.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-06-21
-00005 // Updated : 2009-06-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/color_cast.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_number_precision
-00013 
-00014 #ifndef glm_gtx_color_cast
-00015 #define glm_gtx_color_cast
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtx/number_precision.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_color_cast extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace color_cast 
-00028 {
-00029         using namespace gtx::number_precision;
-00030 
-00033 
-00036         template <typename valType> gtc::type_precision::uint8 u8channel_cast(valType a);
-00037 
-00040         template <typename valType>     gtc::type_precision::uint16 u16channel_cast(valType a);
-00041 
-00042         template <typename T> gtc::type_precision::uint32 u32_rgbx_cast(const detail::tvec3<T>& c);             
-00043         template <typename T> gtc::type_precision::uint32 u32_xrgb_cast(const detail::tvec3<T>& c);             
-00044         template <typename T> gtc::type_precision::uint32 u32_bgrx_cast(const detail::tvec3<T>& c);             
-00045         template <typename T> gtc::type_precision::uint32 u32_xbgr_cast(const detail::tvec3<T>& c);             
-00046 
-00047         template <typename T> gtc::type_precision::uint32 u32_rgba_cast(const detail::tvec4<T>& c);             
-00048         template <typename T> gtc::type_precision::uint32 u32_argb_cast(const detail::tvec4<T>& c);             
-00049         template <typename T> gtc::type_precision::uint32 u32_bgra_cast(const detail::tvec4<T>& c);             
-00050         template <typename T> gtc::type_precision::uint32 u32_abgr_cast(const detail::tvec4<T>& c);             
-00051 
-00052         template <typename T> gtc::type_precision::uint64 u64_rgbx_cast(const detail::tvec3<T>& c);             
-00053         template <typename T> gtc::type_precision::uint64 u64_xrgb_cast(const detail::tvec3<T>& c);             
-00054         template <typename T> gtc::type_precision::uint64 u64_bgrx_cast(const detail::tvec3<T>& c);             
-00055         template <typename T> gtc::type_precision::uint64 u64_xbgr_cast(const detail::tvec3<T>& c);             
-00056 
-00057         template <typename T> gtc::type_precision::uint64 u64_rgba_cast(const detail::tvec4<T>& c);             
-00058         template <typename T> gtc::type_precision::uint64 u64_argb_cast(const detail::tvec4<T>& c);             
-00059         template <typename T> gtc::type_precision::uint64 u64_bgra_cast(const detail::tvec4<T>& c);             
-00060         template <typename T> gtc::type_precision::uint64 u64_abgr_cast(const detail::tvec4<T>& c);             
-00061 
-00062         template <typename T> gtx::number_precision::f16vec1 f16_channel_cast(T a);     
-00063 
-00064         template <typename T> gtc::type_precision::f16vec3 f16_rgbx_cast(T c);          
-00065         template <typename T> gtc::type_precision::f16vec3 f16_xrgb_cast(T c);          
-00066         template <typename T> gtc::type_precision::f16vec3 f16_bgrx_cast(T c);          
-00067         template <typename T> gtc::type_precision::f16vec3 f16_xbgr_cast(T c);          
-00068 
-00069         template <typename T> gtc::type_precision::f16vec4 f16_rgba_cast(T c);          
-00070         template <typename T> gtc::type_precision::f16vec4 f16_argb_cast(T c);          
-00071         template <typename T> gtc::type_precision::f16vec4 f16_bgra_cast(T c);          
-00072         template <typename T> gtc::type_precision::f16vec4 f16_abgr_cast(T c);          
-00073 
-00074         template <typename T> gtx::number_precision::f32vec1 f32_channel_cast(T a);     
-00075 
-00076         template <typename T> gtc::type_precision::f32vec3 f32_rgbx_cast(T c);          
-00077         template <typename T> gtc::type_precision::f32vec3 f32_xrgb_cast(T c);          
-00078         template <typename T> gtc::type_precision::f32vec3 f32_bgrx_cast(T c);          
-00079         template <typename T> gtc::type_precision::f32vec3 f32_xbgr_cast(T c);          
-00080 
-00081         template <typename T> gtc::type_precision::f32vec4 f32_rgba_cast(T c);          
-00082         template <typename T> gtc::type_precision::f32vec4 f32_argb_cast(T c);          
-00083         template <typename T> gtc::type_precision::f32vec4 f32_bgra_cast(T c);          
-00084         template <typename T> gtc::type_precision::f32vec4 f32_abgr_cast(T c);          
-00085 
-00086         template <typename T> gtx::number_precision::f64vec1 f64_channel_cast(T a);     
-00087 
-00088         template <typename T> gtc::type_precision::f64vec3 f64_rgbx_cast(T c);          
-00089         template <typename T> gtc::type_precision::f64vec3 f64_xrgb_cast(T c);          
-00090         template <typename T> gtc::type_precision::f64vec3 f64_bgrx_cast(T c);          
-00091         template <typename T> gtc::type_precision::f64vec3 f64_xbgr_cast(T c);          
-00092 
-00093         template <typename T> gtc::type_precision::f64vec4 f64_rgba_cast(T c);          
-00094         template <typename T> gtc::type_precision::f64vec4 f64_argb_cast(T c);          
-00095         template <typename T> gtc::type_precision::f64vec4 f64_bgra_cast(T c);          
-00096         template <typename T> gtc::type_precision::f64vec4 f64_abgr_cast(T c);          
-00097 
-00099 }//namespace color_space
-00100 }//namespace gtx
-00101 }//namespace glm
-00102 
-00103 #include "color_cast.inl"
-00104 
-00105 namespace glm{using namespace gtx::color_cast;}
-00106 
-00107 #endif//glm_gtx_color_cast
-
-
- - - diff --git a/doc/api-0.9.2/a00030_source.html b/doc/api-0.9.2/a00030_source.html deleted file mode 100644 index 96acf809..00000000 --- a/doc/api-0.9.2/a00030_source.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -color_space.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
color_space.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2007-02-22
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/color_space.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_color_space
-00014 #define glm_gtx_color_space
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_color_space extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace color_space 
-00026 {
-00029 
-00032     template <typename valType> 
-00033         detail::tvec3<valType> rgbColor(
-00034                 detail::tvec3<valType> const & hsvValue);
-00035 
-00038     template <typename valType> 
-00039         detail::tvec3<valType> hsvColor(
-00040                 detail::tvec3<valType> const & rgbValue);
-00041                 
-00044     template <typename valType> 
-00045         detail::tmat4x4<valType> saturation(
-00046                 valType const s);
-00047 
-00050         template <typename valType> 
-00051         detail::tvec3<valType> saturation(
-00052                 valType const s, 
-00053                 detail::tvec3<valType> const & color);
-00054                 
-00057     template <typename valType> 
-00058         detail::tvec4<valType> saturation(
-00059                 valType const s, 
-00060                 detail::tvec4<valType> const & color);
-00061                 
-00064         template <typename valType> 
-00065         valType luminosity(
-00066                 detail::tvec3<valType> const & color);
-00067 
-00069 }//namespace color_space
-00070 }//namespace gtx
-00071 }//namespace glm
-00072 
-00073 #include "color_space.inl"
-00074 
-00075 namespace glm{using namespace gtx::color_space;}
-00076 
-00077 #endif//glm_gtx_color_space
-
-
- - - diff --git a/doc/api-0.9.2/a00031_source.html b/doc/api-0.9.2/a00031_source.html deleted file mode 100644 index 90be3308..00000000 --- a/doc/api-0.9.2/a00031_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -color_space_YCoCg.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
color_space_YCoCg.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-10-28
-00005 // Updated : 2008-10-28
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/color_space_YCoCg.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_color_space_YCoCg
-00014 #define glm_gtx_color_space_YCoCg
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace color_space_YCoCg 
-00026 {
-00029 
-00032         template <typename valType> 
-00033         detail::tvec3<valType> rgb2YCoCg(
-00034                 detail::tvec3<valType> const & rgbColor);
-00035 
-00038     template <typename valType> 
-00039         detail::tvec3<valType> YCoCg2rgb(
-00040                 detail::tvec3<valType> const & YCoCgColor);
-00041 
-00045         template <typename valType> 
-00046         detail::tvec3<valType> rgb2YCoCgR(
-00047                 detail::tvec3<valType> const & rgbColor);
-00048 
-00052     template <typename valType> 
-00053         detail::tvec3<valType> YCoCgR2rgb(
-00054                 detail::tvec3<valType> const & YCoCgColor);
-00055 
-00057 }//namespace color_space_YCoCg
-00058 }//namespace gtx
-00059 }//namespace glm
-00060 
-00061 #include "color_space_YCoCg.inl"
-00062 
-00063 namespace glm{using namespace gtx::color_space_YCoCg;}
-00064 
-00065 #endif//glm_gtx_color_space_YCoCg
-
-
- - - diff --git a/doc/api-0.9.2/a00032_source.html b/doc/api-0.9.2/a00032_source.html deleted file mode 100644 index 0cfc9880..00000000 --- a/doc/api-0.9.2/a00032_source.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - -compatibility.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
compatibility.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-01-24
-00005 // Updated : 2008-10-24
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/compatibility.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half_float
-00013 
-00014 #ifndef glm_gtx_compatibility
-00015 #define glm_gtx_compatibility
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"  
-00019 #include "../gtc/half_float.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_compatibility extension included")
-00023 #endif
-00024 
-00025 #if(GLM_COMPILER & GLM_COMPILER_VC)
-00026 #include <cfloat>
-00027 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
-00028 #include <cmath>
-00029 #endif//GLM_COMPILER
-00030 
-00031 namespace glm{
-00032 namespace gtx{
-00033 namespace compatibility 
-00034 {
-00037 
-00038         template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);}                                                                                                                                                                    
-00039         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, T a){return mix(x, y, a);}                                                 
-00040         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, T a){return mix(x, y, a);}                                                 
-00041         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, T a){return mix(x, y, a);}                                                 
-00042         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, const detail::tvec2<T>& a){return mix(x, y, a);}   
-00043         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, const detail::tvec3<T>& a){return mix(x, y, a);}   
-00044         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, const detail::tvec4<T>& a){return mix(x, y, a);}   
-00045 
-00046         template <typename T> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));}                                                                                                          
-00047         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> saturate(const detail::tvec2<T>& x){return clamp(x, T(0), T(1));}                                     
-00048         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> saturate(const detail::tvec3<T>& x){return clamp(x, T(0), T(1));}                                     
-00049         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> saturate(const detail::tvec4<T>& x){return clamp(x, T(0), T(1));}                                     
-00050 
-00051         template <typename T> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);}                                                                                                                          
-00052         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<T>& y){return atan(x, y);}       
-00053         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return atan(x, y);}       
-00054         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<T>& y){return atan(x, y);}       
-00055 
-00056         template <typename genType> bool isfinite(genType const & x);                                                                                   
-00057         template <typename valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x);                              
-00058         template <typename valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x);                              
-00059         template <typename valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x);                              
-00060 
-00061         template <typename genType> bool isinf(genType const & x);                                                                                                              
-00062         template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x);                                 
-00063         template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x);                                 
-00064         template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x);                                 
-00065 
-00066         template <typename genType> bool isnan(genType const & x);                                                                                                              
-00067         template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x);                                 
-00068         template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x);                                 
-00069         template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x);                                 
-00070 
-00071         typedef bool                                            bool1;                  
-00072         typedef detail::tvec2<bool>                     bool2;                  
-00073         typedef detail::tvec3<bool>                     bool3;                  
-00074         typedef detail::tvec4<bool>                     bool4;                  
-00075 
-00076         typedef bool                                            bool1x1;                
-00077         typedef detail::tmat2x2<bool>           bool2x2;                
-00078         typedef detail::tmat2x3<bool>           bool2x3;                
-00079         typedef detail::tmat2x4<bool>           bool2x4;                
-00080         typedef detail::tmat3x2<bool>           bool3x2;                
-00081         typedef detail::tmat3x3<bool>           bool3x3;                
-00082         typedef detail::tmat3x4<bool>           bool3x4;                
-00083         typedef detail::tmat4x2<bool>           bool4x2;                
-00084         typedef detail::tmat4x3<bool>           bool4x3;                
-00085         typedef detail::tmat4x4<bool>           bool4x4;                
-00086 
-00087         typedef int                                                     int1;                   
-00088         typedef detail::tvec2<int>                      int2;                   
-00089         typedef detail::tvec3<int>                      int3;                   
-00090         typedef detail::tvec4<int>                      int4;                   
-00091 
-00092         typedef int                                                     int1x1;                 
-00093         typedef detail::tmat2x2<int>            int2x2;                 
-00094         typedef detail::tmat2x3<int>            int2x3;                 
-00095         typedef detail::tmat2x4<int>            int2x4;                 
-00096         typedef detail::tmat3x2<int>            int3x2;                 
-00097         typedef detail::tmat3x3<int>            int3x3;                 
-00098         typedef detail::tmat3x4<int>            int3x4;                 
-00099         typedef detail::tmat4x2<int>            int4x2;                 
-00100         typedef detail::tmat4x3<int>            int4x3;                 
-00101         typedef detail::tmat4x4<int>            int4x4;                 
-00102 
-00103         typedef gtc::half_float::half                                           half1;                  
-00104         typedef detail::tvec2<gtc::half_float::half>            half2;                  
-00105         typedef detail::tvec3<gtc::half_float::half>            half3;                  
-00106         typedef detail::tvec4<gtc::half_float::half>            half4;                  
-00107 
-00108         typedef gtc::half_float::half                                           half1x1;                
-00109         typedef detail::tmat2x2<gtc::half_float::half>          half2x2;                
-00110         typedef detail::tmat2x3<gtc::half_float::half>          half2x3;                
-00111         typedef detail::tmat2x4<gtc::half_float::half>          half2x4;                
-00112         typedef detail::tmat3x2<gtc::half_float::half>          half3x2;                
-00113         typedef detail::tmat3x3<gtc::half_float::half>          half3x3;                
-00114         typedef detail::tmat3x4<gtc::half_float::half>          half3x4;                
-00115         typedef detail::tmat4x2<gtc::half_float::half>          half4x2;                
-00116         typedef detail::tmat4x3<gtc::half_float::half>          half4x3;                
-00117         typedef detail::tmat4x4<gtc::half_float::half>          half4x4;                
-00118 
-00119         typedef float                                           float1;                 
-00120         typedef detail::tvec2<float>            float2;                 
-00121         typedef detail::tvec3<float>            float3;                 
-00122         typedef detail::tvec4<float>            float4;                 
-00123 
-00124         typedef float                                           float1x1;               
-00125         typedef detail::tmat2x2<float>          float2x2;               
-00126         typedef detail::tmat2x3<float>          float2x3;               
-00127         typedef detail::tmat2x4<float>          float2x4;               
-00128         typedef detail::tmat3x2<float>          float3x2;               
-00129         typedef detail::tmat3x3<float>          float3x3;               
-00130         typedef detail::tmat3x4<float>          float3x4;               
-00131         typedef detail::tmat4x2<float>          float4x2;               
-00132         typedef detail::tmat4x3<float>          float4x3;               
-00133         typedef detail::tmat4x4<float>          float4x4;               
-00134 
-00135         typedef double                                          double1;                
-00136         typedef detail::tvec2<double>           double2;                
-00137         typedef detail::tvec3<double>           double3;                
-00138         typedef detail::tvec4<double>           double4;                
-00139 
-00140         typedef double                                          double1x1;              
-00141         typedef detail::tmat2x2<double>         double2x2;              
-00142         typedef detail::tmat2x3<double>         double2x3;              
-00143         typedef detail::tmat2x4<double>         double2x4;              
-00144         typedef detail::tmat3x2<double>         double3x2;              
-00145         typedef detail::tmat3x3<double>         double3x3;              
-00146         typedef detail::tmat3x4<double>         double3x4;              
-00147         typedef detail::tmat4x2<double>         double4x2;              
-00148         typedef detail::tmat4x3<double>         double4x3;              
-00149         typedef detail::tmat4x4<double>         double4x4;              
-00150 
-00152 }//namespace compatibility
-00153 }//namespace gtx
-00154 }//namespace glm
-00155 
-00156 #include "compatibility.inl"
-00157 
-00158 namespace glm{using namespace gtx::compatibility;}
-00159 
-00160 #endif//glm_gtx_compatibility
-00161 
-00162 
-00163 
-00164 
-00165 
-00166 
-00167 
-00168 
-00169 
-00170 
-
-
- - - diff --git a/doc/api-0.9.2/a00033_source.html b/doc/api-0.9.2/a00033_source.html deleted file mode 100644 index eb00e7d3..00000000 --- a/doc/api-0.9.2/a00033_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -component_wise.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
component_wise.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-05-21
-00005 // Updated : 2007-05-21
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/component_wise.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_component_wise
-00014 #define glm_gtx_component_wise
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_component_wise extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace component_wise 
-00026 {
-00029 
-00032         template <typename genType> 
-00033         typename genType::value_type compAdd(
-00034                 genType const & v);
-00035 
-00038         template <typename genType> 
-00039         typename genType::value_type compMul(
-00040                 genType const & v);
-00041 
-00044         template <typename genType> 
-00045         typename genType::value_type compMin(
-00046                 genType const & v);
-00047 
-00050         template <typename genType> 
-00051         typename genType::value_type compMax(
-00052                 genType const & v);
-00053 
-00055 }//namespace component_wise
-00056 }//namespace gtx
-00057 }//namespace glm
-00058 
-00059 #include "component_wise.inl"
-00060 
-00061 namespace glm{using namespace gtx::component_wise;}
-00062 
-00063 #endif//glm_gtx_component_wise
-
-
- - - diff --git a/doc/api-0.9.2/a00035_source.html b/doc/api-0.9.2/a00035_source.html deleted file mode 100644 index afd6108e..00000000 --- a/doc/api-0.9.2/a00035_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -epsilon.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
epsilon.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/epsilon.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half_float
-00012 // - GLM_GTC_quaternion
-00014 
-00015 #ifndef glm_gtx_epsilon
-00016 #define glm_gtx_epsilon
-00017 
-00018 // Dependency:
-00019 #include "../glm.hpp"
-00020 #include "../gtc/half_float.hpp"
-00021 #include "../gtc/quaternion.hpp"
-00022 
-00023 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00024 #       pragma message("GLM: GLM_GTX_epsilon extension included")
-00025 #endif
-00026 
-00027 namespace glm{
-00028 namespace gtx{
-00029 namespace epsilon 
-00030 {
-00033 
-00036         template <typename genTypeT, typename genTypeU> 
-00037         bool equalEpsilon(
-00038                 genTypeT const & x, 
-00039                 genTypeT const & y, 
-00040                 genTypeU const & epsilon);
-00041                 
-00044         template <typename genTypeT, typename genTypeU>
-00045         bool notEqualEpsilon(
-00046                 genTypeT const & x, 
-00047                 genTypeT const & y, 
-00048                 genTypeU const & epsilon);
-00049 
-00051 }//namespace epsilon
-00052 }//namespace gtx
-00053 }//namespace glm
-00054 
-00055 #include "epsilon.inl"
-00056 
-00057 namespace glm{using namespace gtx::epsilon;}
-00058 
-00059 #endif//glm_gtx_epsilon
-
-
- - - diff --git a/doc/api-0.9.2/a00036_source.html b/doc/api-0.9.2/a00036_source.html deleted file mode 100644 index 8c1aa435..00000000 --- a/doc/api-0.9.2/a00036_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - -euler_angles.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
euler_angles.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2007-08-14
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/euler_angles.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half_float
-00013 // ToDo:
-00014 // - mat2 mat2GTX(const vec2& angles) undefined
-00015 // - mat3 mat3GTX(const vec2& angles) undefined
-00017 
-00018 #ifndef glm_gtx_euler_angles
-00019 #define glm_gtx_euler_angles
-00020 
-00021 // Dependency:
-00022 #include "../glm.hpp"
-00023 #include "../gtc/half_float.hpp"
-00024 
-00025 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00026 #       pragma message("GLM: GLM_GTX_euler_angles extension included")
-00027 #endif
-00028 
-00029 namespace glm{
-00030 namespace gtx{
-00031 namespace euler_angles 
-00032 {
-00035 
-00038         template <typename valType> 
-00039         detail::tmat4x4<valType> eulerAngleX(
-00040                 valType const & angleX);
-00041 
-00044         template <typename valType> 
-00045         detail::tmat4x4<valType> eulerAngleY(
-00046                 valType const & angleY);
-00047 
-00050         template <typename valType> 
-00051         detail::tmat4x4<valType> eulerAngleZ(
-00052                 valType const & angleZ);
-00053 
-00056         template <typename valType> 
-00057         detail::tmat4x4<valType> eulerAngleXY(
-00058                 valType const & angleX, 
-00059                 valType const & angleY);
-00060 
-00063         template <typename valType> 
-00064         detail::tmat4x4<valType> eulerAngleYX(
-00065                 valType const & angleY, 
-00066                 valType const & angleX);
-00067 
-00070         template <typename valType> 
-00071         detail::tmat4x4<valType> eulerAngleXZ(
-00072                 valType const & angleX, 
-00073                 valType const & angleZ);
-00074 
-00077         template <typename valType> 
-00078         detail::tmat4x4<valType> eulerAngleZX(
-00079                 valType const & angleZ, 
-00080                 valType const & angleX);
-00081 
-00084         template <typename valType> 
-00085         detail::tmat4x4<valType> eulerAngleYZ(
-00086                 valType const & angleY, 
-00087                 valType const & angleZ);
-00088 
-00091         template <typename valType> 
-00092         detail::tmat4x4<valType> eulerAngleZY(
-00093                 valType const & angleZ, 
-00094                 valType const & angleY);
-00095 
-00098         template <typename valType> 
-00099         detail::tmat4x4<valType> eulerAngleYXZ(
-00100                 valType const & yaw, 
-00101                 valType const & pitch, 
-00102                 valType const & roll);
-00103 
-00106         template <typename valType> 
-00107         detail::tmat4x4<valType> yawPitchRoll(
-00108                 valType const & yaw, 
-00109                 valType const & pitch, 
-00110                 valType const & roll);
-00111 
-00114         template <typename T> 
-00115         detail::tmat2x2<T> orientate2(T const & angle);
-00116 
-00119         template <typename T> 
-00120         detail::tmat3x3<T> orientate3(T const & angle);
-00121 
-00124         template <typename T> 
-00125         detail::tmat3x3<T> orientate3(detail::tvec3<T> const & angles);
-00126                 
-00129         template <typename T> 
-00130         detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles);
-00131 
-00133 }//namespace euler_angles
-00134 }//namespace gtx
-00135 }//namespace glm
-00136 
-00137 #include "euler_angles.inl"
-00138 
-00139 namespace glm{using namespace gtx::euler_angles;}
-00140 
-00141 #endif//glm_gtx_euler_angles
-
-
- - - diff --git a/doc/api-0.9.2/a00037_source.html b/doc/api-0.9.2/a00037_source.html deleted file mode 100644 index 95525696..00000000 --- a/doc/api-0.9.2/a00037_source.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - -ext.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
ext.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-01
-00005 // Updated : 2010-12-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/ext.hpp
-00009 
-00010 #ifndef glm_ext
-00011 #define glm_ext
-00012 
-00013 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED))
-00014 #       define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED
-00015 #       pragma message("GLM: All extensions included (not recommanded)")
-00016 #endif//GLM_MESSAGES
-00017 
-00018 #include "./gtc/half_float.hpp"
-00019 #include "./gtc/matrix_access.hpp"
-00020 #include "./gtc/matrix_integer.hpp"
-00021 #include "./gtc/matrix_inverse.hpp"
-00022 #include "./gtc/matrix_transform.hpp"
-00023 #include "./gtc/quaternion.hpp"
-00024 #include "./gtc/swizzle.hpp"
-00025 #include "./gtc/type_precision.hpp"
-00026 #include "./gtc/type_ptr.hpp"
-00027 
-00028 #include "./gtx/associated_min_max.hpp"
-00029 #include "./gtx/bit.hpp"
-00030 #include "./gtx/closest_point.hpp"
-00031 #include "./gtx/color_cast.hpp"
-00032 #include "./gtx/color_space.hpp"
-00033 #include "./gtx/color_space_YCoCg.hpp"
-00034 #include "./gtx/compatibility.hpp"
-00035 #include "./gtx/component_wise.hpp"
-00036 #include "./gtx/epsilon.hpp"
-00037 #include "./gtx/euler_angles.hpp"
-00038 #include "./gtx/extend.hpp"
-00039 #include "./gtx/extented_min_max.hpp"
-00040 #include "./gtx/fast_exponential.hpp"
-00041 #include "./gtx/fast_square_root.hpp"
-00042 #include "./gtx/fast_trigonometry.hpp"
-00043 #include "./gtx/gradient_paint.hpp"
-00044 #include "./gtx/handed_coordinate_space.hpp"
-00045 #include "./gtx/inertia.hpp"
-00046 #include "./gtx/int_10_10_10_2.hpp"
-00047 #include "./gtx/integer.hpp"
-00048 #include "./gtx/intersect.hpp"
-00049 #include "./gtx/log_base.hpp"
-00050 #include "./gtx/matrix_cross_product.hpp"
-00051 #include "./gtx/matrix_interpolation.hpp"
-00052 #include "./gtx/matrix_major_storage.hpp"
-00053 #include "./gtx/matrix_operation.hpp"
-00054 #include "./gtx/matrix_query.hpp"
-00055 #include "./gtx/mixed_product.hpp"
-00056 #include "./gtx/multiple.hpp"
-00057 #include "./gtx/noise.hpp"
-00058 #include "./gtx/norm.hpp"
-00059 #include "./gtx/normal.hpp"
-00060 #include "./gtx/normalize_dot.hpp"
-00061 #include "./gtx/number_precision.hpp"
-00062 #include "./gtx/ocl_type.hpp"
-00063 #include "./gtx/optimum_pow.hpp"
-00064 #include "./gtx/orthonormalize.hpp"
-00065 #include "./gtx/perpendicular.hpp"
-00066 #include "./gtx/polar_coordinates.hpp"
-00067 #include "./gtx/projection.hpp"
-00068 #include "./gtx/quaternion.hpp"
-00069 #include "./gtx/random.hpp"
-00070 #include "./gtx/raw_data.hpp"
-00071 #include "./gtx/reciprocal.hpp"
-00072 #include "./gtx/rotate_vector.hpp"
-00073 #include "./gtx/spline.hpp"
-00074 #include "./gtx/std_based_type.hpp"
-00075 #include "./gtx/string_cast.hpp"
-00076 #include "./gtx/transform.hpp"
-00077 #include "./gtx/transform2.hpp"
-00078 #include "./gtx/ulp.hpp"
-00079 #include "./gtx/unsigned_int.hpp"
-00080 #include "./gtx/vec1.hpp"
-00081 #include "./gtx/vector_access.hpp"
-00082 #include "./gtx/vector_angle.hpp"
-00083 #include "./gtx/vector_query.hpp"
-00084 #include "./gtx/verbose_operator.hpp"
-00085 #include "./gtx/wrap.hpp"
-00086 
-00087 #if(GLM_ARCH & GLM_ARCH_SSE2)
-00088 #       include "./gtx/simd_vec4.hpp"
-00089 #       include "./gtx/simd_mat4.hpp"
-00090 #endif
-00091 
-00092 #include "./virtrev/xstream.hpp"
-00093 
-00094 //const float goldenRatio = 1.618033988749894848f;
-00095 //const float pi = 3.141592653589793238f;
-00096 
-00097 #endif //glm_ext
-
-
- - - diff --git a/doc/api-0.9.2/a00038_source.html b/doc/api-0.9.2/a00038_source.html deleted file mode 100644 index 97bb3891..00000000 --- a/doc/api-0.9.2/a00038_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -extend.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
extend.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-01-07
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/extend.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_extend
-00014 #define glm_gtx_extend
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_extend extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace extend 
-00026 {
-00029 
-00032         template <typename genType> 
-00033         genType extend(
-00034                 genType const & Origin, 
-00035                 genType const & Source, 
-00036                 typename genType::value_type const Length);
-00037 
-00039 }//namespace extend
-00040 }//namespace gtx
-00041 }//namespace glm
-00042 
-00043 #include "extend.inl"
-00044 
-00045 namespace glm{using namespace gtx::extend;}
-00046 
-00047 #endif//glm_gtx_extend
-
-
- - - diff --git a/doc/api-0.9.2/a00039_source.html b/doc/api-0.9.2/a00039_source.html deleted file mode 100644 index 57e652c0..00000000 --- a/doc/api-0.9.2/a00039_source.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - -extented_min_max.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
extented_min_max.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-03-14
-00005 // Updated : 2010-02-19
-00006 // Licence : This source is under MIT License
-00007 // File    : gtx_extented_min_max.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_half_float
-00013 
-00014 #ifndef glm_gtx_extented_min_max
-00015 #define glm_gtx_extented_min_max
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtc/half_float.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_extented_min_max extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace extented_min_max 
-00028 {
-00031 
-00032         //< Return the minimum component-wise values of 3 inputs 
-00033         //< From GLM_GTX_extented_min_max extension
-00034         template <typename T>
-00035         T min(
-00036                 T const & x, 
-00037                 T const & y, 
-00038                 T const & z);
-00039 
-00040         //< Return the minimum component-wise values of 3 inputs
-00041         //< From GLM_GTX_extented_min_max extension
-00042         template 
-00043         <
-00044                 typename T, 
-00045                 template <typename> class C
-00046         >
-00047         C<T> min(
-00048                 C<T> const & x, 
-00049                 typename C<T>::value_type const & y, 
-00050                 typename C<T>::value_type const & z);
-00051 
-00052         //< Return the minimum component-wise values of 3 inputs 
-00053         //< From GLM_GTX_extented_min_max extension
-00054         template 
-00055         <
-00056                 typename T, 
-00057                 template <typename> class C
-00058         >
-00059         C<T> min(
-00060                 C<T> const & x, 
-00061                 C<T> const & y, 
-00062                 C<T> const & z);
-00063 
-00064         //< Return the minimum component-wise values of 4 inputs 
-00065         //< From GLM_GTX_extented_min_max extension
-00066         template <typename T>
-00067         T min(
-00068                 T const & x, 
-00069                 T const & y, 
-00070                 T const & z, 
-00071                 T const & w);
-00072 
-00073         //< Return the minimum component-wise values of 4 inputs 
-00074         //< From GLM_GTX_extented_min_max extension
-00075         template 
-00076         <
-00077                 typename T, 
-00078                 template <typename> class C
-00079         >
-00080         C<T> min(
-00081                 C<T> const & x, 
-00082                 typename C<T>::value_type const & y, 
-00083                 typename C<T>::value_type const & z, 
-00084                 typename C<T>::value_type const & w);
-00085 
-00086         //< Return the minimum component-wise values of 4 inputs
-00087         //< From GLM_GTX_extented_min_max extension
-00088         template 
-00089         <
-00090                 typename T, 
-00091                 template <typename> class C
-00092         >
-00093         C<T> min(
-00094                 C<T> const & x, 
-00095                 C<T> const & y, 
-00096                 C<T> const & z,
-00097                 C<T> const & w);
-00098 
-00099         //< Return the maximum component-wise values of 3 inputs 
-00100         //< From GLM_GTX_extented_min_max extension
-00101         template <typename T>
-00102         T max(
-00103                 T const & x, 
-00104                 T const & y, 
-00105                 T const & z);
-00106 
-00107         //< Return the maximum component-wise values of 3 inputs
-00108         //< From GLM_GTX_extented_min_max extension
-00109         template 
-00110         <
-00111                 typename T, 
-00112                 template <typename> class C
-00113         >
-00114         C<T> max(
-00115                 C<T> const & x, 
-00116                 typename C<T>::value_type const & y, 
-00117                 typename C<T>::value_type const & z);
-00118 
-00119         //< Return the maximum component-wise values of 3 inputs 
-00120         //< From GLM_GTX_extented_min_max extension
-00121         template 
-00122         <
-00123                 typename T, 
-00124                 template <typename> class C
-00125         >
-00126         C<T> max(
-00127                 C<T> const & x, 
-00128                 C<T> const & y, 
-00129                 C<T> const & z);
-00130 
-00131         //< Return the maximum component-wise values of 4 inputs
-00132         //< From GLM_GTX_extented_min_max extension
-00133         template <typename T>
-00134         T max(
-00135                 T const & x, 
-00136                 T const & y, 
-00137                 T const & z, 
-00138                 T const & w);
-00139 
-00140         //< Return the maximum component-wise values of 4 inputs 
-00141         //< From GLM_GTX_extented_min_max extension
-00142         template 
-00143         <
-00144                 typename T, 
-00145                 template <typename> class C
-00146         >
-00147         C<T> max(
-00148                 C<T> const & x, 
-00149                 typename C<T>::value_type const & y, 
-00150                 typename C<T>::value_type const & z, 
-00151                 typename C<T>::value_type const & w);
-00152 
-00153         //< Return the maximum component-wise values of 4 inputs 
-00154         //< From GLM_GTX_extented_min_max extension
-00155         template 
-00156         <
-00157                 typename T, 
-00158                 template <typename> class C
-00159         >
-00160         C<T> max(
-00161                 C<T> const & x, 
-00162                 C<T> const & y, 
-00163                 C<T> const & z, 
-00164                 C<T> const & w);
-00165 
-00167 }//namespace extented_min_max
-00168 }//namespace gtx
-00169 }//namespace glm
-00170 
-00171 #include "extented_min_max.inl"
-00172 
-00173 namespace glm{using namespace gtx::extented_min_max;}
-00174 
-00175 #endif//glm_gtx_extented_min_max
-
-
- - - diff --git a/doc/api-0.9.2/a00040_source.html b/doc/api-0.9.2/a00040_source.html deleted file mode 100644 index 66b84161..00000000 --- a/doc/api-0.9.2/a00040_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - -fast_exponential.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
fast_exponential.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-01-09
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/fast_exponential.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half_float
-00013 
-00014 #ifndef glm_gtx_fast_exponential
-00015 #define glm_gtx_fast_exponential
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtc/half_float.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_fast_exponential extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace fast_exponential 
-00028 {
-00029         using namespace gtc::half_float;
-00032 
-00035         template <typename valType> 
-00036         valType fastPow(
-00037                 valType const & x, 
-00038                 valType const & y);
-00039 
-00042         template <typename T, typename U> 
-00043         T fastPow(
-00044                 const T& x, 
-00045                 const U& y);
-00046                 
-00049         template <typename T> 
-00050         T fastExp(const T& x);
-00051                 
-00054         template <typename T> 
-00055         T fastLog(const T& x);
-00056 
-00059         template <typename T> 
-00060         T fastExp2(const T& x);
-00061                 
-00064         template <typename T> 
-00065         T fastLog2(const T& x);
-00066 
-00069         template <typename T> 
-00070         T fastLn(const T& x);
-00071 
-00073 }//namespace fast_exponential
-00074 }//namespace gtx
-00075 }//namespace glm
-00076 
-00077 #include "fast_exponential.inl"
-00078 
-00079 namespace glm{using namespace gtx::fast_exponential;}
-00080 
-00081 #endif//glm_gtx_fast_exponential
-
-
- - - diff --git a/doc/api-0.9.2/a00041_source.html b/doc/api-0.9.2/a00041_source.html deleted file mode 100644 index fa31160d..00000000 --- a/doc/api-0.9.2/a00041_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - -fast_square_root.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
fast_square_root.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-01-04
-00005 // Updated : 2008-10-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/fast_square_root.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 // Note:
-00013 // - Sqrt optimisation based on Newton's method, 
-00014 // www.gamedev.net/community/forums/topic.asp?topic id=139956
-00016 
-00017 #ifndef glm_gtx_fast_square_root
-00018 #define glm_gtx_fast_square_root
-00019 
-00020 // Dependency:
-00021 #include "../glm.hpp"
-00022 
-00023 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00024 #       pragma message("GLM: GLM_GTX_fast_square_root extension included")
-00025 #endif
-00026 
-00027 namespace glm{
-00028 namespace gtx{
-00029 namespace fast_square_root      
-00030 {
-00033 
-00036         template <typename genType> 
-00037         genType fastSqrt(genType const & x);
-00038 
-00041         template <typename genType> 
-00042         genType fastInverseSqrt(genType const & x);
-00043                 
-00046         template <typename genType> 
-00047         typename genType::value_type fastLength(genType const & x);
-00048 
-00051         template <typename genType> 
-00052         typename genType::value_type fastDistance(genType const & x, genType const & y);
-00053 
-00056         template <typename genType> 
-00057         genType fastNormalize(genType const & x);
-00058 
-00060 }// namespace fast_square_root
-00061 }// namespace gtx
-00062 }// namespace glm
-00063 
-00064 #include "fast_square_root.inl"
-00065 
-00066 namespace glm{using namespace gtx::fast_square_root;}
-00067 
-00068 #endif//glm_gtx_fast_square_root
-
-
- - - diff --git a/doc/api-0.9.2/a00042_source.html b/doc/api-0.9.2/a00042_source.html deleted file mode 100644 index 812542aa..00000000 --- a/doc/api-0.9.2/a00042_source.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - -fast_trigonometry.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
fast_trigonometry.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-01-08
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/fast_trigonometry.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_fast_trigonometry
-00014 #define glm_gtx_fast_trigonometry
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace fast_trigonometry     
-00026 {
-00029 
-00033     template <typename T> 
-00034         T fastSin(const T& angle);
-00035 
-00039         template <typename T> 
-00040         T fastCos(const T& angle);
-00041 
-00045         template <typename T> 
-00046         T fastTan(const T& angle);
-00047 
-00051         template <typename T> 
-00052         T fastAsin(const T& angle);
-00053 
-00057     template <typename T> 
-00058         T fastAcos(const T& angle);
-00059 
-00063         template <typename T> 
-00064         T fastAtan(const T& y, const T& x);
-00065 
-00069     template <typename T> 
-00070         T fastAtan(const T& angle);
-00071 
-00073 }//namespace fast_trigonometry
-00074 }//namespace gtx
-00075 }//namespace glm
-00076 
-00077 #include "fast_trigonometry.inl"
-00078 
-00079 namespace glm{using namespace gtx::fast_trigonometry;}
-00080 
-00081 #endif//glm_gtx_fast_trigonometry
-
-
- - - diff --git a/doc/api-0.9.2/a00043_source.html b/doc/api-0.9.2/a00043_source.html deleted file mode 100644 index 713b3b7f..00000000 --- a/doc/api-0.9.2/a00043_source.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - -func_common.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_common.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-03-08
-00005 // Updated : 2010-01-26
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_common.hpp
-00009 
-00010 #ifndef glm_core_func_common
-00011 #define glm_core_func_common
-00012 
-00013 #include "_fixes.hpp"
-00014 
-00015 namespace glm
-00016 {
-00017         namespace core{
-00018         namespace function{
-00019         namespace common{ 
-00020 
-00023 
-00028         template <typename genFIType> 
-00029         genFIType abs(genFIType const & x);
-00030 
-00035         template <typename genFIType> 
-00036         genFIType sign(genFIType const & x);
-00037 
-00042         template <typename genType> 
-00043         genType floor(genType const & x);
-00044 
-00050         template <typename genType> 
-00051         genType trunc(genType const & x);
-00052 
-00061         template <typename genType> 
-00062         genType round(genType const & x);
-00063 
-00070         template <typename genType> 
-00071         genType roundEven(genType const & x);
-00072 
-00078     template <typename genType> 
-00079         genType ceil(genType const & x);
-00080 
-00085     template <typename genType> 
-00086         genType fract(genType const & x);
-00087 
-00093     template <typename genType> 
-00094         genType mod(
-00095                 genType const & x, 
-00096                 genType const & y);
-00097 
-00103     template <typename genType> 
-00104         genType mod(
-00105                 genType const & x, 
-00106                 typename genType::value_type const & y);
-00107 
-00115         template <typename genType> 
-00116         genType modf(
-00117                 genType const & x, 
-00118                 genType & i);
-00119 
-00124         template <typename genType> 
-00125         genType min(
-00126                 genType const & x, 
-00127                 genType const & y);
-00128 
-00129         template <typename genType> 
-00130         genType min(
-00131                 genType const & x, 
-00132                 typename genType::value_type const & y);
-00133 
-00138         template <typename genType> 
-00139         genType max(
-00140                 genType const & x, 
-00141                 genType const & y);
-00142 
-00143         template <typename genType> 
-00144         genType max(
-00145                 genType const & x, 
-00146                 typename genType::value_type const & y);
-00147 
-00153         template <typename genType> 
-00154         genType clamp(
-00155                 genType const & x, 
-00156                 genType const & minVal, 
-00157                 genType const & maxVal); 
-00158 
-00159         template <typename genType> 
-00160         genType clamp(
-00161                 genType const & x, 
-00162                 typename genType::value_type const & minVal, 
-00163                 typename genType::value_type const & maxVal); 
-00164 
-00189         // \todo Test when 'a' is a boolean.
-00190         template <typename genTypeT, typename genTypeU> 
-00191         genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a);
-00192 
-00197         template <typename genType> 
-00198         genType step(
-00199                 genType const & edge, 
-00200                 genType const & x);
-00201 
-00202         template <typename genType> 
-00203         genType step(
-00204                 typename genType::value_type const & edge, 
-00205                 genType const & x);
-00206 
-00219         template <typename genType> 
-00220         genType smoothstep(
-00221                 genType const & edge0, 
-00222                 genType const & edge1, 
-00223                 genType const & x);
-00224 
-00225         template <typename genType> 
-00226         genType smoothstep(
-00227                 typename genType::value_type const & edge0, 
-00228                 typename genType::value_type const & edge1, 
-00229                 genType const & x);
-00230 
-00239         template <typename genType> 
-00240         typename genType::bool_type isnan(genType const & x);
-00241 
-00250         template <typename genType> 
-00251         typename genType::bool_type isinf(genType const & x);
-00252 
-00259         template <typename genType, typename genIType>
-00260         genIType floatBitsToInt(genType const & value);
-00261 
-00268         template <typename genType, typename genUType>
-00269         genUType floatBitsToUint(genType const & value);
-00270 
-00279         template <typename genType, typename genIType>
-00280         genType intBitsToFloat(genIType const & value);
-00281         
-00290     template <typename genType, typename genUType>
-00291     genType uintBitsToFloat(genUType const & value);
-00292         
-00297         template <typename genType>
-00298         genType fma(genType const & a, genType const & b, genType const & c);
-00299 
-00312         template <typename genType, typename genIType>
-00313         genType frexp(genType const & x, genIType & exp);
-00314 
-00324         template <typename genType, typename genIType>
-00325         genType ldexp(genType const & x, genIType const & exp);
-00326 
-00328         }//namespace common
-00329         }//namespace function
-00330         }//namespace core
-00331 
-00332         using namespace core::function::common;
-00333 }//namespace glm
-00334 
-00335 #include "func_common.inl"
-00336 
-00337 #endif//glm_core_func_common
-
-
- - - diff --git a/doc/api-0.9.2/a00044_source.html b/doc/api-0.9.2/a00044_source.html deleted file mode 100644 index 6855da32..00000000 --- a/doc/api-0.9.2/a00044_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -func_exponential.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_exponential.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-08
-00005 // Updated : 2010-02-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_exponential.hpp
-00009 
-00010 #ifndef glm_core_func_exponential
-00011 #define glm_core_func_exponential
-00012 
-00013 namespace glm
-00014 {
-00015         namespace core{
-00016         namespace function{
-00018         namespace exponential{
-00019 
-00022 
-00027         template <typename genType> 
-00028         genType pow(genType const & x, genType const & y);
-00029 
-00034         template <typename genType> 
-00035         genType exp(genType const & x);
-00036 
-00043         template <typename genType> 
-00044         genType log(genType const & x);
-00045 
-00050         template <typename genType> 
-00051         genType exp2(genType const & x);
-00052 
-00058         template <typename genType> 
-00059         genType log2(genType const & x);
-00060 
-00065         template <typename genType> 
-00066         genType sqrt(genType const & x);
-00067     
-00072         template <typename genType> 
-00073         genType inversesqrt(genType const & x);
-00074 
-00076 
-00077         }//namespace exponential
-00078         }//namespace function
-00079         }//namespace core
-00080 
-00081         using namespace core::function::exponential;
-00082 }//namespace glm
-00083 
-00084 #include "func_exponential.inl"
-00085 
-00086 #endif//glm_core_func_exponential
-
-
- - - diff --git a/doc/api-0.9.2/a00045_source.html b/doc/api-0.9.2/a00045_source.html deleted file mode 100644 index a0ae6ffa..00000000 --- a/doc/api-0.9.2/a00045_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - -func_geometric.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_geometric.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-03
-00005 // Updated : 2010-02-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_geometric.hpp
-00009 
-00010 #ifndef glm_core_func_geometric
-00011 #define glm_core_func_geometric
-00012 
-00013 namespace glm
-00014 {
-00015         namespace core{
-00016         namespace function{
-00017         namespace geometric{ 
-00018 
-00021 
-00026         template <typename genType> 
-00027         typename genType::value_type length(
-00028                 genType const & x); 
-00029 
-00034         template <typename genType> 
-00035         typename genType::value_type distance(
-00036                 genType const & p0, 
-00037                 genType const & p1);
-00038 
-00043     template <typename genType> 
-00044         typename genType::value_type dot(
-00045                 genType const & x, 
-00046                 genType const & y);
-00047 
-00052     template <typename T> 
-00053         detail::tvec3<T> cross(
-00054                 detail::tvec3<T> const & x, 
-00055                 detail::tvec3<T> const & y);
-00056 
-00061         template <typename genType> 
-00062         genType normalize(
-00063                 genType const & x);
-00064 
-00069     template <typename genType> 
-00070         genType faceforward(
-00071                 genType const & N, 
-00072                 genType const & I, 
-00073                 genType const & Nref);
-00074   
-00080     template <typename genType> 
-00081         genType reflect(
-00082                 genType const & I, 
-00083                 genType const & N);
-00084   
-00091     template <typename genType> 
-00092         genType refract(
-00093                 genType const & I, 
-00094                 genType const & N, 
-00095                 typename genType::value_type const & eta);
-00096 
-00098 
-00099         }//namespace geometric
-00100         }//namespace function
-00101         }//namespace core
-00102 
-00103         using namespace core::function::geometric;
-00104 }//namespace glm
-00105 
-00106 #include "func_geometric.inl"
-00107 
-00108 #endif//glm_core_func_geometric
-
-
- - - diff --git a/doc/api-0.9.2/a00046_source.html b/doc/api-0.9.2/a00046_source.html deleted file mode 100644 index 10dd9890..00000000 --- a/doc/api-0.9.2/a00046_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -func_integer.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_integer.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2010-03-17
-00005 // Updated : 2010-03-31
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_integer.hpp
-00009 
-00010 #ifndef glm_core_func_integer
-00011 #define glm_core_func_integer
-00012 
-00013 namespace glm
-00014 {
-00015         namespace core{
-00016         namespace function{
-00018         namespace integer{
-00019 
-00022 
-00029                 template <typename genUType>
-00030                 genUType uaddCarry(
-00031                         genUType const & x, 
-00032                         genUType const & y, 
-00033                         genUType & carry);
-00034 
-00041                 template <typename genUType>
-00042                 genUType usubBorrow(
-00043                         genUType const & x, 
-00044                         genUType const & y, 
-00045                         genUType & borrow);
-00046                 
-00053                 template <typename genUType>
-00054                 void umulExtended(
-00055                         genUType const & x, 
-00056                         genUType const & y, 
-00057                         genUType & msb, 
-00058                         genUType & lsb);
-00059                 
-00066                 template <typename genIType>
-00067                 void imulExtended(
-00068                         genIType const & x, 
-00069                         genIType const & y, 
-00070                         genIType & msb, 
-00071                         genIType & lsb);
-00072 
-00086                 template <typename genIUType>
-00087                 genIUType bitfieldExtract(
-00088                         genIUType const & Value, 
-00089                         int const & Offset, 
-00090                         int const & Bits);
-00091 
-00104                 template <typename genIUType>
-00105                 genIUType bitfieldInsert(
-00106                         genIUType const & Base, 
-00107                         genIUType const & Insert, 
-00108                         int const & Offset, 
-00109                         int const & Bits);
-00110 
-00117                 template <typename genIUType>
-00118                 genIUType bitfieldReverse(genIUType const & value);
-00119                 
-00124                 template <typename T, template <typename> class C>
-00125                 typename C<T>::signed_type bitCount(C<T> const & Value);
-00126 
-00133                 template <typename T, template <typename> class C>
-00134                 typename C<T>::signed_type findLSB(C<T> const & Value);
-00135 
-00143                 template <typename T, template <typename> class C>
-00144                 typename C<T>::signed_type findMSB(C<T> const & Value);
-00145 
-00147 
-00148         }//namespace integer
-00149         }//namespace function
-00150         }//namespace core
-00151 
-00152         using namespace core::function::integer;
-00153 }//namespace glm
-00154 
-00155 #include "func_integer.inl"
-00156 
-00157 #endif//glm_core_func_integer
-00158 
-
-
- - - diff --git a/doc/api-0.9.2/a00047_source.html b/doc/api-0.9.2/a00047_source.html deleted file mode 100644 index f46de258..00000000 --- a/doc/api-0.9.2/a00047_source.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -func_matrix.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_matrix.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-03
-00005 // Updated : 2010-02-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_matrix.hpp
-00009 
-00010 #ifndef glm_core_func_matrix
-00011 #define glm_core_func_matrix
-00012 
-00013 namespace glm
-00014 {
-00015         namespace core{
-00016         namespace function{
-00018         namespace matrix{
-00019 
-00022 
-00028         template <typename matType> 
-00029         matType matrixCompMult(
-00030                 matType const & x, 
-00031                 matType const & y);
-00032 
-00039     template <typename vecType, typename matType> 
-00040         matType outerProduct(
-00041                 vecType const & c, 
-00042                 vecType const & r);
-00043 
-00048     template <typename matType> 
-00049         typename matType::transpose_type transpose(
-00050                 matType const & x);
-00051         
-00056         template <typename T> 
-00057         typename detail::tmat2x2<T>::value_type determinant(
-00058                 detail::tmat2x2<T> const & m);
-00059 
-00064         template <typename T> 
-00065         typename detail::tmat3x3<T>::value_type determinant(
-00066                 detail::tmat3x3<T> const & m);
-00067 
-00072     template <typename T> 
-00073         typename detail::tmat4x4<T>::value_type determinant(
-00074                 detail::tmat4x4<T> const & m);
-00075 
-00080         template <typename T> 
-00081         detail::tmat2x2<T> inverse(
-00082                 detail::tmat2x2<T> const & m);
-00083 
-00088         template <typename T> 
-00089         detail::tmat3x3<T> inverse(
-00090                 detail::tmat3x3<T> const & m);
-00091 
-00096         template <typename T> 
-00097         detail::tmat4x4<T> inverse(
-00098                 detail::tmat4x4<T> const & m);
-00099 
-00101 
-00102         }//namespace matrix
-00103         }//namespace function
-00104         }//namespace core
-00105 
-00106         using namespace core::function::matrix;
-00107 }//namespace glm
-00108 
-00109 #include "func_matrix.inl"
-00110 
-00111 #endif//glm_core_func_matrix
-
-
- - - diff --git a/doc/api-0.9.2/a00048_source.html b/doc/api-0.9.2/a00048_source.html deleted file mode 100644 index 8c57f811..00000000 --- a/doc/api-0.9.2/a00048_source.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -func_noise.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_noise.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-01
-00005 // Updated : 2008-09-10
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_noise.hpp
-00009 
-00010 #ifndef glm_core_func_noise
-00011 #define glm_core_func_noise
-00012 
-00013 namespace glm
-00014 {
-00015         namespace core{
-00016         namespace function{
-00017         // Define all noise functions from Section 8.9 of GLSL 1.30.8 specification. Included in glm namespace.
-00018         namespace noise{
-00019 
-00022 
-00027         template <typename genType>
-00028         typename genType::value_type noise1(genType const & x);
-00029 
-00034         template <typename genType>
-00035         detail::tvec2<typename genType::value_type> noise2(genType const & x);
-00036 
-00041         template <typename genType>
-00042         detail::tvec3<typename genType::value_type> noise3(genType const & x);
-00043 
-00048         template <typename genType>
-00049         detail::tvec4<typename genType::value_type> noise4(genType const & x);
-00050 
-00052 
-00053         }//namespace noise
-00054         }//namespace function
-00055         }//namespace core
-00056 
-00057         using namespace core::function::noise;
-00058 }//namespace glm
-00059 
-00060 #include "func_noise.inl"
-00061 
-00062 #endif//glm_core_func_noise
-
-
- - - diff --git a/doc/api-0.9.2/a00049_source.html b/doc/api-0.9.2/a00049_source.html deleted file mode 100644 index 06b44e0e..00000000 --- a/doc/api-0.9.2/a00049_source.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -func_packing.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_packing.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2010-03-17
-00005 // Updated : 2010-03-17
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_packing.hpp
-00009 
-00010 #ifndef glm_core_func_packing
-00011 #define glm_core_func_packing
-00012 
-00013 namespace glm
-00014 {
-00015         namespace core{
-00016         namespace function{
-00018         namespace packing
-00019         {
-00022 
-00034                 detail::uint32 packUnorm2x16(detail::tvec2<detail::float32> const & v);
-00035         
-00047                 detail::uint32 packUnorm4x8(detail::tvec4<detail::float32> const & v);
-00048         
-00060                 detail::uint32 packSnorm4x8(detail::tvec4<detail::float32> const & v);
-00061 
-00073                 detail::tvec2<detail::float32> unpackUnorm2x16(detail::uint32 const & p);
-00074 
-00086         detail::tvec4<detail::float32> unpackUnorm4x8(detail::uint32 const & p);
-00087         
-00099                 detail::tvec4<detail::float32> unpackSnorm4x8(detail::uint32 const & p);
-00100 
-00109                 double packDouble2x32(detail::tvec2<detail::uint32> const & v);
-00110         
-00118                 detail::tvec2<detail::uint32> unpackDouble2x32(double const & v);
-00119 
-00121 
-00122         }//namespace packing
-00123         }//namespace function
-00124         }//namespace core
-00125 
-00126         using namespace core::function::packing;
-00127 }//namespace glm
-00128 
-00129 #include "func_packing.inl"
-00130 
-00131 #endif//glm_core_func_packing
-00132 
-
-
- - - diff --git a/doc/api-0.9.2/a00050_source.html b/doc/api-0.9.2/a00050_source.html deleted file mode 100644 index 9303cdc5..00000000 --- a/doc/api-0.9.2/a00050_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - -func_trigonometric.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_trigonometric.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-01
-00005 // Updated : 2008-09-10
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_trigonometric.hpp
-00009 
-00010 #ifndef glm_core_func_trigonometric
-00011 #define glm_core_func_trigonometric
-00012 
-00013 namespace glm
-00014 {
-00015         namespace core{
-00016         namespace function{
-00020         namespace trigonometric{
-00021 
-00024 
-00029         template <typename genType> 
-00030         genType radians(genType const & degrees);
-00031 
-00036         template <typename genType> 
-00037         genType degrees(genType const & radians);
-00038 
-00044         template <typename genType> 
-00045         genType sin(genType const & angle);
-00046 
-00052         template <typename genType> 
-00053         genType cos(genType const & angle);
-00054 
-00059         template <typename genType> 
-00060         genType tan(genType const & angle); 
-00061 
-00068         template <typename genType> 
-00069         genType asin(genType const & x);
-00070 
-00077         template <typename genType> 
-00078         genType acos(genType const & x);
-00079 
-00088         template <typename genType> 
-00089         genType atan(genType const & y, genType const & x);
-00090 
-00096         template <typename genType> 
-00097         genType atan(genType const & y_over_x);
-00098 
-00103         template <typename genType> 
-00104         genType sinh(genType const & angle);
-00105 
-00110         template <typename genType> 
-00111         genType cosh(genType const & angle);
-00112 
-00117         template <typename genType> 
-00118         genType tanh(genType const & angle);
-00119 
-00124         template <typename genType> 
-00125         genType asinh(genType const & x);
-00126         
-00132         template <typename genType> 
-00133         genType acosh(genType const & x);
-00134 
-00140         template <typename genType> 
-00141         genType atanh(genType const & x);
-00142 
-00144 
-00145         }//namespace trigonometric
-00146         }//namespace function
-00147         }//namespace core
-00148 
-00149         using namespace core::function::trigonometric;
-00150 }//namespace glm
-00151 
-00152 #include "func_trigonometric.inl"
-00153 
-00154 #endif//glm_core_func_trigonometric
-00155 
-00156 
-
-
- - - diff --git a/doc/api-0.9.2/a00051_source.html b/doc/api-0.9.2/a00051_source.html deleted file mode 100644 index 0ab67318..00000000 --- a/doc/api-0.9.2/a00051_source.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - -func_vector_relational.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
func_vector_relational.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-03
-00005 // Updated : 2008-09-09
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/func_vector_relational.hpp
-00009 
-00010 #ifndef glm_core_func_vector_relational
-00011 #define glm_core_func_vector_relational
-00012 
-00013 #include "_detail.hpp"
-00014 
-00015 namespace glm
-00016 {
-00017         namespace core{
-00018         namespace function{
-00021         namespace vector_relational
-00022         {
-00025 
-00030         template <typename T, template <typename> class vecType> 
-00031                 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type lessThan
-00032                 (
-00033                         vecType<T> const & x, 
-00034                         vecType<T> const & y
-00035                 )
-00036                 {
-00037                         GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, 
-00038                                 "Invalid template instantiation of 'lessThan', GLM vector types required");
-00039                         GLM_STATIC_ASSERT(detail::is_bool<T>::_NO,
-00040                                 "Invalid template instantiation of 'lessThan', GLM vector types required floating-point or integer value types vectors");
-00041 
-00042                         typename vecType<bool>::bool_type Result(vecType<bool>::null);
-00043                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00044                                 Result[i] = x[i] < y[i];
-00045 
-00046                         return Result;
-00047                 }
-00048 
-00053                 template <typename T, template <typename> class vecType> 
-00054                 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type lessThanEqual
-00055                 (
-00056                         vecType<T> const & x, 
-00057                         vecType<T> const & y
-00058                 )
-00059                 {
-00060                         GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, 
-00061                                 "Invalid template instantiation of 'lessThanEqual', GLM vector types required");
-00062                         GLM_STATIC_ASSERT(detail::is_bool<T>::_NO, 
-00063                                 "Invalid template instantiation of 'lessThanEqual', GLM vector types required floating-point or integer value types vectors");
-00064 
-00065                         typename vecType<bool>::bool_type Result(vecType<bool>::null);
-00066                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00067                                 Result[i] = x[i] <= y[i];
-00068                         return Result;
-00069                 }
-00070 
-00075                 template <typename T, template <typename> class vecType> 
-00076                 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type greaterThan
-00077                 (
-00078                         vecType<T> const & x, 
-00079                         vecType<T> const & y
-00080                 )
-00081                 {
-00082                         GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, 
-00083                                 "Invalid template instantiation of 'greaterThan', GLM vector types required");
-00084                         GLM_STATIC_ASSERT(detail::is_bool<T>::_NO, 
-00085                                 "Invalid template instantiation of 'greaterThan', GLM vector types required floating-point or integer value types vectors");
-00086 
-00087                         typename vecType<bool>::bool_type Result(vecType<bool>::null);
-00088                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00089                                 Result[i] = x[i] > y[i];
-00090                         return Result;
-00091                 }
-00092 
-00097                 template <typename T, template <typename> class vecType> 
-00098                 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type greaterThanEqual
-00099                 (
-00100                         vecType<T> const & x, 
-00101                         vecType<T> const & y
-00102                 )
-00103                 {
-00104                         GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, 
-00105                                 "Invalid template instantiation of 'greaterThanEqual', GLM vector types required");
-00106                         GLM_STATIC_ASSERT(detail::is_bool<T>::_NO, 
-00107                                 "Invalid template instantiation of 'greaterThanEqual', GLM vector types required floating-point or integer value types vectors");
-00108 
-00109                         typename vecType<bool>::bool_type Result(vecType<bool>::null);
-00110                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00111                                 Result[i] = x[i] >= y[i];
-00112                         return Result;
-00113                 }
-00114 
-00119                 template <typename T, template <typename> class vecType> 
-00120                 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type equal
-00121                 (
-00122                         vecType<T> const & x, 
-00123                         vecType<T> const & y
-00124                 )
-00125                 {
-00126                         GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, 
-00127                                 "Invalid template instantiation of 'equal', GLM vector types required");
-00128 
-00129                         typename vecType<bool>::bool_type Result(vecType<bool>::null);
-00130                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00131                                 Result[i] = x[i] == y[i];
-00132                         return Result;
-00133                 }
-00134 
-00139                 template <typename T, template <typename> class vecType> 
-00140                 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type notEqual
-00141                 (
-00142                         vecType<T> const & x, 
-00143                         vecType<T> const & y
-00144                 )
-00145                 {
-00146                         GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, 
-00147                                 "Invalid template instantiation of 'notEqual', GLM vector types required");
-00148 
-00149                         typename vecType<bool>::bool_type Result(vecType<bool>::null);
-00150                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00151                                 Result[i] = x[i] != y[i];
-00152                         return Result;
-00153                 }
-00154 
-00159                 template <template <typename> class vecType> 
-00160                 GLM_FUNC_QUALIFIER bool any(vecType<bool> const & v)
-00161                 {
-00162                         GLM_STATIC_ASSERT(detail::is_vector<vecType<bool> >::_YES, 
-00163                                 "Invalid template instantiation of 'any', GLM boolean vector types required");
-00164 
-00165                         bool Result = false;
-00166                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00167                                 Result = Result || v[i];
-00168                         return Result;
-00169                 }
-00170 
-00175                 template <template <typename> class vecType> 
-00176                 GLM_FUNC_QUALIFIER bool all(vecType<bool> const & v)
-00177                 {
-00178                         GLM_STATIC_ASSERT(detail::is_vector<vecType<bool> >::_YES, 
-00179                                 "Invalid template instantiation of 'all', GLM boolean vector types required");
-00180 
-00181                         bool Result = true;
-00182                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00183                                 Result = Result && v[i];
-00184                         return Result;
-00185                 }
-00186 
-00192                 template <template <typename> class vecType> 
-00193                 GLM_FUNC_QUALIFIER vecType<bool> not_(vecType<bool> const & v)
-00194                 {
-00195                         GLM_STATIC_ASSERT(detail::is_vector<vecType<bool> >::_YES, 
-00196                                 "Invalid template instantiation of 'not_', GLM vector types required");
-00197 
-00198                         typename vecType<bool>::bool_type Result(vecType<bool>::null);
-00199                         for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i)
-00200                                 Result[i] = !v[i];
-00201                         return Result;
-00202                 }
-00203 
-00205 
-00206         }//namespace vector_relational
-00207         }//namespace function
-00208         }//namespace core
-00209 
-00210         using namespace core::function::vector_relational;
-00211 }//namespace glm
-00212 
-00213 #include "func_vector_relational.inl"
-00214 
-00215 #endif//glm_core_func_vector_relational
-
-
- - - diff --git a/doc/api-0.9.2/a00052_source.html b/doc/api-0.9.2/a00052_source.html deleted file mode 100644 index bb8c5668..00000000 --- a/doc/api-0.9.2/a00052_source.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - -glm.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
glm.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-01-14
-00005 // Updated : 2011-01-19
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/glm.hpp
-00009 
-00010 #include "core/_fixes.hpp"
-00011 
-00012 #ifndef glm_glm
-00013 #define glm_glm
-00014 
-00015 #include <cmath>
-00016 #include <climits>
-00017 #include <cfloat>
-00018 #include <limits>
-00019 #include "core/setup.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_CORE_INCLUDED_DISPLAYED))
-00022 #       define GLM_MESSAGE_CORE_INCLUDED_DISPLAYED
-00023 #       pragma message("GLM: Core library included")
-00024 #endif//GLM_MESSAGE
-00025 
-00027 namespace glm
-00028 {
-00030         namespace core
-00031         {
-00036                 namespace type
-00037                 {
-00038                         namespace precision{}
-00039                 }
-00040 
-00043                 namespace function{}
-00044         }//namespace core
-00045 
-00047         namespace gtc{}
-00048 
-00051         namespace gtx{}
-00052 
-00054         namespace virtrev{}
-00055 
-00056         using namespace core::type;
-00057         using namespace core::type::precision;
-00058         using namespace core::function;
-00059 }//namespace glm
-00060 
-00061 #include "./core/_detail.hpp"
-00062 #include "./core/type.hpp"
-00063 
-00064 #include "./core/func_trigonometric.hpp"
-00065 #include "./core/func_exponential.hpp"
-00066 #include "./core/func_common.hpp"
-00067 #include "./core/func_packing.hpp"
-00068 #include "./core/func_geometric.hpp"
-00069 #include "./core/func_matrix.hpp"
-00070 #include "./core/func_vector_relational.hpp"
-00071 #include "./core/func_integer.hpp"
-00072 #include "./core/func_noise.hpp"
-00073 #include "./core/_swizzle.hpp"
-00074 
-00076 // check type sizes
-00077 #ifndef GLM_STATIC_ASSERT_NULL
-00078         GLM_STATIC_ASSERT(sizeof(glm::detail::int8) == 1, "int8 size isn't 1 byte on this platform");
-00079         GLM_STATIC_ASSERT(sizeof(glm::detail::int16) == 2, "int16 size isn't 2 bytes on this platform");
-00080         GLM_STATIC_ASSERT(sizeof(glm::detail::int32) == 4, "int32 size isn't 4 bytes on this platform");
-00081         GLM_STATIC_ASSERT(sizeof(glm::detail::int64) == 8, "int64 size isn't 8 bytes on this platform");
-00082 
-00083         GLM_STATIC_ASSERT(sizeof(glm::detail::uint8) == 1, "uint8 size isn't 1 byte on this platform");
-00084         GLM_STATIC_ASSERT(sizeof(glm::detail::uint16) == 2, "uint16 size isn't 2 bytes on this platform");
-00085         GLM_STATIC_ASSERT(sizeof(glm::detail::uint32) == 4, "uint32 size isn't 4 bytes on this platform");
-00086         GLM_STATIC_ASSERT(sizeof(glm::detail::uint64) == 8, "uint64 size isn't 8 bytes on this platform");
-00087 
-00088         GLM_STATIC_ASSERT(sizeof(glm::detail::float16) == 2, "float16 size isn't 2 bytes on this platform");
-00089         GLM_STATIC_ASSERT(sizeof(glm::detail::float32) == 4, "float32 size isn't 4 bytes on this platform");
-00090         GLM_STATIC_ASSERT(sizeof(glm::detail::float64) == 8, "float64 size isn't 8 bytes on this platform");
-00091 #endif//GLM_STATIC_ASSERT_NULL
-00092 
-00093 #endif//glm_glm
-
-
- - - diff --git a/doc/api-0.9.2/a00053_source.html b/doc/api-0.9.2/a00053_source.html deleted file mode 100644 index 13e80509..00000000 --- a/doc/api-0.9.2/a00053_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -gradient_paint.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
gradient_paint.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-03-06
-00005 // Updated : 2009-03-09
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/gradient_paint.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_gradient_paint
-00014 #define glm_gtx_gradient_paint
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include "../gtx/optimum_pow.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_gradient_paint extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace gradient_paint 
-00027 {
-00028         using namespace gtx::optimum_pow;
-00029 
-00032 
-00033         template <typename valType>
-00034         valType radialGradient(
-00035                 glm::detail::tvec2<valType> const & Center,
-00036                 valType const & Radius,
-00037                 glm::detail::tvec2<valType> const & Focal,
-00038                 glm::detail::tvec2<valType> const & Position);
-00039 
-00040         template <typename valType>
-00041         valType linearGradient(
-00042                 glm::detail::tvec2<valType> const & Point0,
-00043                 glm::detail::tvec2<valType> const & Point1,
-00044                 glm::detail::tvec2<valType> const & Position);
-00045 
-00047 }// namespace gradient_paint
-00048 }// namespace gtx
-00049 }// namespace glm
-00050 
-00051 #include "gradient_paint.inl"
-00052 
-00053 namespace glm{using namespace gtx::gradient_paint;}
-00054 
-00055 #endif//glm_gtx_gradient_paint
-
-
- - - diff --git a/doc/api-0.9.2/a00055_source.html b/doc/api-0.9.2/a00055_source.html deleted file mode 100644 index b099f36a..00000000 --- a/doc/api-0.9.2/a00055_source.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - -gtxModules.doxy Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
gtxModules.doxy
-
-
-
00001 
-
-
- - - diff --git a/doc/api-0.9.2/a00056_source.html b/doc/api-0.9.2/a00056_source.html deleted file mode 100644 index c4a08555..00000000 --- a/doc/api-0.9.2/a00056_source.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - -half_float.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
half_float.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-04-29
-00005 // Updated : 2010-02-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/half_float.hpp
-00009 
-00010 #ifndef glm_gtc_half_float
-00011 #define glm_gtc_half_float
-00012 
-00013 // Dependency:
-00014 #include "../glm.hpp"
-00015 
-00016 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00017 #       pragma message("GLM: GLM_GTC_half_float extension included")
-00018 #endif
-00019 
-00020 namespace glm{
-00021 namespace detail
-00022 {
-00023 #ifndef _MSC_EXTENSIONS
-00024         template <>
-00025         struct tvec2<thalf>
-00026         {
-00027                 enum ctor{null};
-00028                 typedef thalf value_type;
-00029                 typedef std::size_t size_type;
-00030                 static size_type value_size();
-00031                 GLM_FUNC_DECL size_type length() const;
-00032 
-00033                 typedef tvec2<thalf> type;
-00034                 typedef tvec2<bool> bool_type;
-00035 
-00037                 // Data
-00038 
-00039                 thalf x, y;
-00040 
-00042                 // Accesses
-00043 
-00044                 thalf & operator[](size_type i);
-00045                 thalf const & operator[](size_type i) const;
-00046 
-00048                 // Implicit basic constructors
-00049 
-00050                 tvec2();
-00051                 tvec2(tvec2<thalf> const & v);
-00052 
-00054                 // Explicit basic constructors
-00055 
-00056                 explicit tvec2(ctor);
-00057                 explicit tvec2(
-00058                         thalf const & s);
-00059                 explicit tvec2(
-00060                         thalf const & s1, 
-00061                         thalf const & s2);
-00062 
-00064                 // Swizzle constructors
-00065 
-00066                 tvec2(tref2<thalf> const & r);
-00067 
-00069                 // Convertion scalar constructors
-00070 
-00072                 template <typename U> 
-00073                 explicit tvec2(U const & x);
-00075                 template <typename U, typename V> 
-00076                 explicit tvec2(U const & x, V const & y);                       
-00077 
-00079                 // Convertion vector constructors
-00080 
-00082                 template <typename U> 
-00083                 explicit tvec2(tvec2<U> const & v);
-00085                 template <typename U> 
-00086                 explicit tvec2(tvec3<U> const & v);
-00088                 template <typename U> 
-00089                 explicit tvec2(tvec4<U> const & v);
-00090 
-00092                 // Unary arithmetic operators
-00093 
-00094                 tvec2<thalf>& operator= (tvec2<thalf> const & v);
-00095 
-00096                 tvec2<thalf>& operator+=(thalf const & s);
-00097                 tvec2<thalf>& operator+=(tvec2<thalf> const & v);
-00098                 tvec2<thalf>& operator-=(thalf const & s);
-00099                 tvec2<thalf>& operator-=(tvec2<thalf> const & v);
-00100                 tvec2<thalf>& operator*=(thalf const & s);
-00101                 tvec2<thalf>& operator*=(tvec2<thalf> const & v);
-00102                 tvec2<thalf>& operator/=(thalf const & s);
-00103                 tvec2<thalf>& operator/=(tvec2<thalf> const & v);
-00104                 tvec2<thalf>& operator++();
-00105                 tvec2<thalf>& operator--();
-00106 
-00108                 // Swizzle operators
-00109 
-00110                 thalf swizzle(comp X) const;
-00111                 tvec2<thalf> swizzle(comp X, comp Y) const;
-00112                 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
-00113                 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
-00114                 tref2<thalf> swizzle(comp X, comp Y);
-00115         };
-00116 
-00117         template <>
-00118         struct tvec3<thalf>
-00119         {
-00120                 enum ctor{null};
-00121                 typedef thalf value_type;
-00122                 typedef std::size_t size_type;
-00123                 static size_type value_size();
-00124                 GLM_FUNC_DECL size_type length() const;
-00125 
-00126                 typedef tvec3<thalf> type;
-00127                 typedef tvec3<bool> bool_type;
-00128 
-00130                 // Data
-00131 
-00132                 thalf x, y, z;
-00133 
-00135                 // Accesses
-00136 
-00137                 thalf & operator[](size_type i);
-00138                 thalf const & operator[](size_type i) const;
-00139 
-00141                 // Implicit basic constructors
-00142 
-00143                 tvec3();
-00144                 tvec3(tvec3<thalf> const & v);
-00145 
-00147                 // Explicit basic constructors
-00148 
-00149                 explicit tvec3(ctor);
-00150                 explicit tvec3(
-00151                         thalf const & s);
-00152                 explicit tvec3(
-00153                         thalf const & s1, 
-00154                         thalf const & s2, 
-00155                         thalf const & s3);
-00156 
-00158                 // Swizzle constructors
-00159 
-00160                 tvec3(tref3<thalf> const & r);
-00161 
-00163                 // Convertion scalar constructors
-00164 
-00166                 template <typename U> 
-00167                 explicit tvec3(U const & x);
-00169                 template <typename U, typename V, typename W> 
-00170                 explicit tvec3(U const & x, V const & y, W const & z);                  
-00171 
-00173                 // Convertion vector constructors
-00174 
-00176                 template <typename A, typename B> 
-00177                 explicit tvec3(tvec2<A> const & v, B const & s);
-00179                 template <typename A, typename B> 
-00180                 explicit tvec3(A const & s, tvec2<B> const & v);
-00182                 template <typename U> 
-00183                 explicit tvec3(tvec3<U> const & v);
-00185                 template <typename U> 
-00186                 explicit tvec3(tvec4<U> const & v);
-00187 
-00189                 // Unary arithmetic operators
-00190 
-00191                 tvec3<thalf>& operator= (tvec3<thalf> const & v);
-00192 
-00193                 tvec3<thalf>& operator+=(thalf const & s);
-00194                 tvec3<thalf>& operator+=(tvec3<thalf> const & v);
-00195                 tvec3<thalf>& operator-=(thalf const & s);
-00196                 tvec3<thalf>& operator-=(tvec3<thalf> const & v);
-00197                 tvec3<thalf>& operator*=(thalf const & s);
-00198                 tvec3<thalf>& operator*=(tvec3<thalf> const & v);
-00199                 tvec3<thalf>& operator/=(thalf const & s);
-00200                 tvec3<thalf>& operator/=(tvec3<thalf> const & v);
-00201                 tvec3<thalf>& operator++();
-00202                 tvec3<thalf>& operator--();
-00203 
-00205                 // Swizzle operators
-00206 
-00207                 thalf swizzle(comp X) const;
-00208                 tvec2<thalf> swizzle(comp X, comp Y) const;
-00209                 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
-00210                 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
-00211                 tref3<thalf> swizzle(comp X, comp Y, comp Z);
-00212         };
-00213 
-00214         template <>
-00215         struct tvec4<thalf>
-00216         {
-00217                 enum ctor{null};
-00218                 typedef thalf value_type;
-00219                 typedef std::size_t size_type;
-00220                 static size_type value_size();
-00221                 GLM_FUNC_DECL size_type length() const;
-00222 
-00223                 typedef tvec4<thalf> type;
-00224                 typedef tvec4<bool> bool_type;
-00225 
-00227                 // Data
-00228 
-00229                 thalf x, y, z, w;
-00230 
-00232                 // Accesses
-00233 
-00234                 thalf & operator[](size_type i);
-00235                 thalf const & operator[](size_type i) const;
-00236 
-00238                 // Implicit basic constructors
-00239 
-00240                 tvec4();
-00241                 tvec4(tvec4<thalf> const & v);
-00242 
-00244                 // Explicit basic constructors
-00245 
-00246                 explicit tvec4(ctor);
-00247                 explicit tvec4(
-00248                         thalf const & s);
-00249                 explicit tvec4(
-00250                         thalf const & s0, 
-00251                         thalf const & s1, 
-00252                         thalf const & s2, 
-00253                         thalf const & s3);
-00254 
-00256                 // Swizzle constructors
-00257 
-00258                 tvec4(tref4<thalf> const & r);
-00259 
-00261                 // Convertion scalar constructors
-00262 
-00264                 template <typename U> 
-00265                 explicit tvec4(U const & x);
-00267                 template <typename A, typename B, typename C, typename D> 
-00268                 explicit tvec4(A const & x, B const & y, C const & z, D const & w);                     
-00269 
-00271                 // Convertion vector constructors
-00272 
-00274                 template <typename A, typename B, typename C> 
-00275                 explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2);
-00277                 template <typename A, typename B, typename C> 
-00278                 explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2);
-00280                 template <typename A, typename B, typename C> 
-00281                 explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v);
-00283                 template <typename A, typename B> 
-00284                 explicit tvec4(tvec3<A> const & v, B const & s);
-00286                 template <typename A, typename B> 
-00287                 explicit tvec4(A const & s, tvec3<B> const & v);
-00289                 template <typename A, typename B> 
-00290                 explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2);
-00292                 template <typename U> 
-00293                 explicit tvec4(tvec4<U> const & v);
-00294 
-00296                 // Unary arithmetic operators
-00297 
-00298                 tvec4<thalf>& operator= (tvec4<thalf> const & v);
-00299 
-00300                 tvec4<thalf>& operator+=(thalf const & s);
-00301                 tvec4<thalf>& operator+=(tvec4<thalf> const & v);
-00302                 tvec4<thalf>& operator-=(thalf const & s);
-00303                 tvec4<thalf>& operator-=(tvec4<thalf> const & v);
-00304                 tvec4<thalf>& operator*=(thalf const & s);
-00305                 tvec4<thalf>& operator*=(tvec4<thalf> const & v);
-00306                 tvec4<thalf>& operator/=(thalf const & s);
-00307                 tvec4<thalf>& operator/=(tvec4<thalf> const & v);
-00308                 tvec4<thalf>& operator++();
-00309                 tvec4<thalf>& operator--();
-00310 
-00312                 // Swizzle operators
-00313 
-00314                 thalf swizzle(comp X) const;
-00315                 tvec2<thalf> swizzle(comp X, comp Y) const;
-00316                 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
-00317                 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
-00318                 tref4<thalf> swizzle(comp X, comp Y, comp Z, comp W);
-00319         };
-00320 #endif//_MSC_EXTENSIONS
-00321 }
-00322 //namespace detail
-00323 
-00324 namespace gtc{
-00325 namespace half_float 
-00326 {
-00329 
-00332         typedef detail::thalf                                   half;
-00333 
-00336         typedef detail::tvec2<detail::thalf>    hvec2;
-00337 
-00340         typedef detail::tvec3<detail::thalf>    hvec3;
-00341 
-00344         typedef detail::tvec4<detail::thalf>    hvec4;
-00345 
-00348         typedef detail::tmat2x2<detail::thalf>  hmat2;
-00349     
-00352         typedef detail::tmat3x3<detail::thalf>  hmat3;
-00353 
-00356         typedef detail::tmat4x4<detail::thalf>  hmat4;
-00357 
-00360         typedef detail::tmat2x2<detail::thalf>  hmat2x2;
-00361     
-00364         typedef detail::tmat2x3<detail::thalf>  hmat2x3;
-00365     
-00368         typedef detail::tmat2x4<detail::thalf>  hmat2x4;
-00369 
-00372         typedef detail::tmat3x2<detail::thalf>  hmat3x2;
-00373     
-00376         typedef detail::tmat3x3<detail::thalf>  hmat3x3;
-00377     
-00380         typedef detail::tmat3x4<detail::thalf>  hmat3x4;
-00381 
-00384         typedef detail::tmat4x2<detail::thalf>  hmat4x2;    
-00385 
-00388         typedef detail::tmat4x3<detail::thalf>  hmat4x3;
-00389     
-00392         typedef detail::tmat4x4<detail::thalf>  hmat4x4;
-00393     
-00395 
-00396 }// namespace half_float
-00397 }// namespace gtc
-00398 }// namespace glm
-00399 
-00400 #include "half_float.inl"
-00401 
-00402 namespace glm{using namespace gtc::half_float;}
-00403 
-00404 #endif//glm_gtc_half_float
-
-
- - - diff --git a/doc/api-0.9.2/a00057_source.html b/doc/api-0.9.2/a00057_source.html deleted file mode 100644 index 93910564..00000000 --- a/doc/api-0.9.2/a00057_source.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -handed_coordinate_space.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
handed_coordinate_space.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2009-02-19
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/handed_coordinate_space.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_handed_coordinate_space
-00014 #define glm_gtx_handed_coordinate_space
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_handed_coordinate_space extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace handed_coordinate_space 
-00026 {
-00029 
-00032         template <typename T> 
-00033         bool rightHanded(
-00034                 detail::tvec3<T> const & tangent, 
-00035                 detail::tvec3<T> const & binormal, 
-00036                 detail::tvec3<T> const & normal);
-00037 
-00040         template <typename T> 
-00041         bool leftHanded(
-00042                 detail::tvec3<T> const & tangent, 
-00043                 detail::tvec3<T> const & binormal, 
-00044                 detail::tvec3<T> const & normal);
-00045 
-00047 }// namespace handed_coordinate_space
-00048 }// namespace gtx
-00049 }// namespace glm
-00050 
-00051 #include "handed_coordinate_space.inl"
-00052 
-00053 namespace glm{using namespace gtx::handed_coordinate_space;}
-00054 
-00055 #endif//glm_gtx_handed_coordinate_space
-
-
- - - diff --git a/doc/api-0.9.2/a00058_source.html b/doc/api-0.9.2/a00058_source.html deleted file mode 100644 index a63b5529..00000000 --- a/doc/api-0.9.2/a00058_source.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - -hint.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
hint.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-14
-00005 // Updated : 2008-08-14
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/hint.hpp
-00009 
-00010 #ifndef glm_core_type
-00011 #define glm_core_type
-00012 
-00013 namespace glm
-00014 {
-00015         // Use dont_care, nicest and fastest to optimize implementations.
-00016         class dont_care {};
-00017         class nicest {};
-00018         class fastest {};
-00019 };
-00020 
-00021 #endif//glm_core_type
-
-
- - - diff --git a/doc/api-0.9.2/a00059_source.html b/doc/api-0.9.2/a00059_source.html deleted file mode 100644 index 784b2ce9..00000000 --- a/doc/api-0.9.2/a00059_source.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - -inertia.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
inertia.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-04-21
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/inertia.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_inertia
-00014 #define glm_gtx_inertia
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_inertia extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace inertia 
-00026 {
-00029 
-00032         template <typename T> 
-00033         detail::tmat3x3<T> boxInertia3(
-00034                 const T Mass, 
-00035                 const detail::tvec3<T>& Scale);
-00036                 
-00039         template <typename T> 
-00040         detail::tmat4x4<T> boxInertia4(
-00041                 const T Mass, 
-00042                 const detail::tvec3<T>& Scale);
-00043                 
-00046         template <typename T> 
-00047         detail::tmat3x3<T> diskInertia3(
-00048                 const T Mass, 
-00049                 const T Radius);
-00050 
-00053         template <typename T> 
-00054         detail::tmat4x4<T> diskInertia4(
-00055                 const T Mass, 
-00056                 const T Radius);
-00057 
-00060         template <typename T> 
-00061         detail::tmat3x3<T> ballInertia3(
-00062                 const T Mass, 
-00063                 const T Radius);
-00064                 
-00067         template <typename T> 
-00068         detail::tmat4x4<T> ballInertia4(
-00069                 const T Mass, 
-00070                 const T Radius);
-00071 
-00074         template <typename T> 
-00075         detail::tmat3x3<T> sphereInertia3(
-00076                 const T Mass, 
-00077                 const T Radius);
-00078 
-00081         template <typename T> 
-00082         detail::tmat4x4<T> sphereInertia4(
-00083                 const T Mass, 
-00084                 const T Radius);
-00085 
-00087 }// namespace inertia
-00088 }// namespace gtx
-00089 }// namespace glm
-00090 
-00091 #include "inertia.inl"
-00092 
-00093 namespace glm{using namespace gtx::inertia;}
-00094 
-00095 #endif//glm_gtx_inertia
-
-
- - - diff --git a/doc/api-0.9.2/a00060_source.html b/doc/api-0.9.2/a00060_source.html deleted file mode 100644 index 197d6fc5..00000000 --- a/doc/api-0.9.2/a00060_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -int_10_10_10_2.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
int_10_10_10_2.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2010-07-07
-00005 // Updated : 2010-07-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/int_10_10_10_2.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_int_10_10_10_2
-00014 #define glm_gtx_int_10_10_10_2
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include "../gtx/raw_data.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_int_10_10_10_2 extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace int_10_10_10_2 
-00027 {
-00028         using namespace gtx::raw_data;
-00029 
-00032 
-00035         dword uint10_10_10_2_cast(glm::vec4 const & v);
-00036 
-00038 
-00039 }//namespace integer
-00040 }//namespace gtx
-00041 }//namespace glm
-00042 
-00043 #include "int_10_10_10_2.inl"
-00044 
-00045 namespace glm{using namespace gtx::int_10_10_10_2;}
-00046 
-00047 #endif//glm_gtx_int_10_10_10_2
-
-
- - - diff --git a/doc/api-0.9.2/a00061_source.html b/doc/api-0.9.2/a00061_source.html deleted file mode 100644 index 27eeed09..00000000 --- a/doc/api-0.9.2/a00061_source.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -integer.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
integer.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-24
-00005 // Updated : 2006-11-14
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/integer.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_integer
-00014 #define glm_gtx_integer
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_integer extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace integer 
-00026 {
-00029 
-00032         int pow(int x, int y);
-00033 
-00036         int sqrt(int x);
-00037 
-00040         int mod(int x, int y);
-00041 
-00044         template <typename genType> 
-00045         genType factorial(genType const & x);
-00046 
-00048 }//namespace integer
-00049 }//namespace gtx
-00050 }//namespace glm
-00051 
-00052 #include "integer.inl"
-00053 
-00054 namespace glm{using namespace gtx::integer;}
-00055 
-00056 #endif//glm_gtx_integer
-
-
- - - diff --git a/doc/api-0.9.2/a00062_source.html b/doc/api-0.9.2/a00062_source.html deleted file mode 100644 index b62a8c3b..00000000 --- a/doc/api-0.9.2/a00062_source.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -intersect.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
intersect.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-04-03
-00005 // Updated : 2009-01-20
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/intersect.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_closest_point
-00013 
-00014 #ifndef glm_gtx_intersect
-00015 #define glm_gtx_intersect
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtx/closest_point.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_closest_point extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace intersect     
-00028 {
-00031 
-00034         template <typename genType>
-00035         bool intersectRayTriangle(
-00036                 genType const & orig, genType const & dir,
-00037                 genType const & vert0, genType const & vert1, genType const & vert2,
-00038                 genType & baryPosition);
-00039 
-00042         template <typename genType>
-00043         bool intersectLineTriangle(
-00044                 genType const & orig, genType const & dir,
-00045                 genType const & vert0, genType const & vert1, genType const & vert2,
-00046                 genType & position);
-00047 
-00050         template <typename genType>
-00051         bool intersectRaySphere(
-00052                 genType const & orig, genType const & dir,
-00053                 genType const & center, typename genType::value_type radius,
-00054                 genType & position, genType & normal);
-00055 
-00058         template <typename genType>
-00059         bool intersectLineSphere(
-00060                 genType const & point0, genType const & point1,
-00061                 genType const & center, typename genType::value_type radius,
-00062                 genType & position, genType & normal);
-00063 
-00065 }//namespace intersect
-00066 }//namespace gtx
-00067 }//namespace glm
-00068 
-00069 #include "intersect.inl"
-00070 
-00071 namespace glm{using namespace gtx::intersect;}
-00072 
-00073 #endif//glm_gtx_intersect
-
-
- - - diff --git a/doc/api-0.9.2/a00063_source.html b/doc/api-0.9.2/a00063_source.html deleted file mode 100644 index bcc28107..00000000 --- a/doc/api-0.9.2/a00063_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - -intrinsic_common.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
intrinsic_common.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-11
-00005 // Updated : 2009-05-11
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/intrinsic_common.hpp
-00009 
-00010 #ifndef glm_detail_intrinsic_common
-00011 #define glm_detail_intrinsic_common
-00012 
-00013 #include "setup.hpp"
-00014 
-00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
-00016 #       error "SSE2 instructions not supported or enabled"
-00017 #else
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022         __m128 sse_abs_ps(__m128 x);
-00023 
-00024         __m128 sse_sgn_ps(__m128 x);
-00025 
-00026         //floor
-00027         __m128 sse_flr_ps(__m128 v);
-00028 
-00029         //trunc
-00030         __m128 sse_trc_ps(__m128 v);
-00031 
-00032         //round
-00033         __m128 sse_nd_ps(__m128 v);
-00034 
-00035         //roundEven
-00036         __m128 sse_rde_ps(__m128 v);
-00037 
-00038         __m128 sse_rnd_ps(__m128 x);
-00039 
-00040         __m128 sse_ceil_ps(__m128 v);
-00041 
-00042         __m128 sse_frc_ps(__m128 x);
-00043 
-00044         __m128 sse_mod_ps(__m128 x, __m128 y);
-00045 
-00046         __m128 sse_modf_ps(__m128 x, __m128i & i);
-00047 
-00048         //GLM_FUNC_QUALIFIER __m128 sse_min_ps(__m128 x, __m128 y)
-00049 
-00050         //GLM_FUNC_QUALIFIER __m128 sse_max_ps(__m128 x, __m128 y)
-00051 
-00052         __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal);
-00053 
-00054         __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a);
-00055 
-00056         __m128 sse_stp_ps(__m128 edge, __m128 x);
-00057 
-00058         __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x);
-00059 
-00060         __m128 sse_nan_ps(__m128 x);
-00061 
-00062         __m128 sse_inf_ps(__m128 x);
-00063 
-00064 }//namespace detail
-00065 }//namespace glm
-00066 
-00067 #include "intrinsic_common.inl"
-00068 
-00069 #endif//GLM_ARCH
-00070 #endif//glm_detail_intrinsic_common
-
-
- - - diff --git a/doc/api-0.9.2/a00064_source.html b/doc/api-0.9.2/a00064_source.html deleted file mode 100644 index 59cc30c4..00000000 --- a/doc/api-0.9.2/a00064_source.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -intrinsic_exponential.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
intrinsic_exponential.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-11
-00005 // Updated : 2009-05-11
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/intrinsic_exponential.hpp
-00009 
-00010 #ifndef glm_detail_intrinsic_exponential
-00011 #define glm_detail_intrinsic_exponential
-00012 
-00013 #include "setup.hpp"
-00014 
-00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
-00016 #       error "SSE2 instructions not supported or enabled"
-00017 #else
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022 /*
-00023 GLM_FUNC_QUALIFIER __m128 sse_rsqrt_nr_ss(__m128 const x)
-00024 {
-00025         __m128 recip = _mm_rsqrt_ss( x );  // "estimate" opcode
-00026         const static __m128 three = { 3, 3, 3, 3 }; // aligned consts for fast load
-00027         const static __m128 half = { 0.5,0.5,0.5,0.5 };
-00028         __m128 halfrecip = _mm_mul_ss( half, recip );
-00029         __m128 threeminus_xrr = _mm_sub_ss( three, _mm_mul_ss( x, _mm_mul_ss ( recip, recip ) ) );
-00030         return _mm_mul_ss( halfrecip, threeminus_xrr );
-00031 }
-00032  
-00033 GLM_FUNC_QUALIFIER __m128 sse_normalize_fast_ps(  float * RESTRICT vOut, float * RESTRICT vIn )
-00034 {
-00035         __m128 x = _mm_load_ss(&vIn[0]);
-00036         __m128 y = _mm_load_ss(&vIn[1]);
-00037         __m128 z = _mm_load_ss(&vIn[2]);
-00038  
-00039         const __m128 l =  // compute x*x + y*y + z*z
-00040                 _mm_add_ss(
-00041                  _mm_add_ss( _mm_mul_ss(x,x),
-00042                              _mm_mul_ss(y,y)
-00043                             ),
-00044                  _mm_mul_ss( z, z )
-00045                 );
-00046  
-00047  
-00048         const __m128 rsqt = _mm_rsqrt_nr_ss( l );
-00049         _mm_store_ss( &vOut[0] , _mm_mul_ss( rsqt, x ) );
-00050         _mm_store_ss( &vOut[1] , _mm_mul_ss( rsqt, y ) );
-00051         _mm_store_ss( &vOut[2] , _mm_mul_ss( rsqt, z ) );
-00052  
-00053         return _mm_mul_ss( l , rsqt );
-00054 }
-00055 */
-00056 }//namespace detail
-00057 }//namespace glm
-00058 
-00059 #endif//GLM_ARCH
-00060 #endif//glm_detail_intrinsic_exponential
-
-
- - - diff --git a/doc/api-0.9.2/a00065_source.html b/doc/api-0.9.2/a00065_source.html deleted file mode 100644 index fa7d60d0..00000000 --- a/doc/api-0.9.2/a00065_source.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -intrinsic_geometric.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
intrinsic_geometric.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-08
-00005 // Updated : 2009-05-08
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/intrinsic_geometric.hpp
-00009 
-00010 #ifndef glm_core_intrinsic_geometric
-00011 #define glm_core_intrinsic_geometric
-00012 
-00013 #include "setup.hpp"
-00014 
-00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
-00016 #       error "SSE2 instructions not supported or enabled"
-00017 #else
-00018 
-00019 #include "intrinsic_common.hpp"
-00020 
-00021 namespace glm{
-00022 namespace detail
-00023 {
-00024         //length
-00025         __m128 sse_len_ps(__m128 x);
-00026 
-00027         //distance
-00028         __m128 sse_dst_ps(__m128 p0, __m128 p1);
-00029 
-00030         //dot
-00031         __m128 sse_dot_ps(__m128 v1, __m128 v2);
-00032 
-00033         // SSE1
-00034         __m128 sse_dot_ss(__m128 v1, __m128 v2);
-00035 
-00036         //cross
-00037         __m128 sse_xpd_ps(__m128 v1, __m128 v2);
-00038 
-00039         //normalize
-00040         __m128 sse_nrm_ps(__m128 v);
-00041 
-00042         //faceforward
-00043         __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref);
-00044 
-00045         //reflect
-00046         __m128 sse_rfe_ps(__m128 I, __m128 N);
-00047 
-00048         //refract
-00049         __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta);
-00050 
-00051 }//namespace detail
-00052 }//namespace glm
-00053 
-00054 #include "intrinsic_geometric.inl"
-00055 
-00056 #endif//GLM_ARCH
-00057 #endif//glm_core_intrinsic_geometric
-
-
- - - diff --git a/doc/api-0.9.2/a00066_source.html b/doc/api-0.9.2/a00066_source.html deleted file mode 100644 index 31baa79a..00000000 --- a/doc/api-0.9.2/a00066_source.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -intrinsic_matrix.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
intrinsic_matrix.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-06-05
-00005 // Updated : 2009-06-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/intrinsic_common.hpp
-00009 
-00010 #ifndef glm_detail_intrinsic_matrix
-00011 #define glm_detail_intrinsic_matrix
-00012 
-00013 #include "setup.hpp"
-00014 
-00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
-00016 #       error "SSE2 instructions not supported or enabled"
-00017 #else
-00018 
-00019 #include "intrinsic_geometric.hpp"
-00020 
-00021 namespace glm{
-00022 namespace detail
-00023 {
-00024         void sse_add_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
-00025 
-00026         void sse_sub_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
-00027 
-00028         __m128 sse_mul_ps(__m128 m[4], __m128 v);
-00029 
-00030         __m128 sse_mul_ps(__m128 v, __m128 m[4]);
-00031 
-00032         void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4]);
-00033 
-00034         void sse_transpose_ps(__m128 const in[4], __m128 out[4]);
-00035 
-00036         void sse_inverse_ps(__m128 const in[4], __m128 out[4]);
-00037 
-00038         void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4]);
-00039 
-00040         __m128 sse_det_ps(__m128 const m[4]);
-00041 
-00042         __m128 sse_slow_det_ps(__m128 const m[4]);
-00043 
-00044 }//namespace detail
-00045 }//namespace glm
-00046 
-00047 #include "intrinsic_matrix.inl"
-00048 
-00049 #endif//GLM_ARCH
-00050 #endif//glm_detail_intrinsic_matrix
-
-
- - - diff --git a/doc/api-0.9.2/a00067_source.html b/doc/api-0.9.2/a00067_source.html deleted file mode 100644 index 5d011e5f..00000000 --- a/doc/api-0.9.2/a00067_source.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -intrinsic_trigonometric.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
intrinsic_trigonometric.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-06-09
-00005 // Updated : 2009-06-09
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/intrinsic_trigonometric.hpp
-00009 
-00010 #ifndef glm_detail_intrinsic_trigonometric
-00011 #define glm_detail_intrinsic_trigonometric
-00012 
-00013 #include "setup.hpp"
-00014 
-00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
-00016 #       error "SSE2 instructions not supported or enabled"
-00017 #else
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022 
-00023 }//namespace detail
-00024 }//namespace glm
-00025 
-00026 #include "intrinsic_trigonometric.inl"
-00027 
-00028 #endif//GLM_ARCH
-00029 #endif//glm_detail_intrinsic_trigonometric
-
-
- - - diff --git a/doc/api-0.9.2/a00068_source.html b/doc/api-0.9.2/a00068_source.html deleted file mode 100644 index 33a68217..00000000 --- a/doc/api-0.9.2/a00068_source.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -intrinsic_vector_relational.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
intrinsic_vector_relational.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-06-09
-00005 // Updated : 2009-06-09
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/intrinsic_vector_relational.hpp
-00009 
-00010 #ifndef glm_detail_intrinsic_vector_relational
-00011 #define glm_detail_intrinsic_vector_relational
-00012 
-00013 #include "setup.hpp"
-00014 
-00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
-00016 #       error "SSE2 instructions not supported or enabled"
-00017 #else
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022 
-00023 }//namespace detail
-00024 }//namespace glm
-00025 
-00026 #include "intrinsic_vector_relational.inl"
-00027 
-00028 #endif//GLM_ARCH
-00029 #endif//glm_detail_intrinsic_vector_relational
-
-
- - - diff --git a/doc/api-0.9.2/a00069_source.html b/doc/api-0.9.2/a00069_source.html deleted file mode 100644 index bab19661..00000000 --- a/doc/api-0.9.2/a00069_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -log_base.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
log_base.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-10-24
-00005 // Updated : 2008-10-24
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/log_base.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_log_base
-00014 #define glm_gtx_log_base
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_log_base extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace log_base 
-00026 {
-00029 
-00032         template <typename genType> 
-00033         genType log(
-00034                 genType const & x, 
-00035                 genType const & base);
-00036 
-00038 
-00039 }//namespace extend
-00040 }//namespace gtx
-00041 }//namespace glm
-00042 
-00043 #include "log_base.inl"
-00044 
-00045 namespace glm{using namespace gtx::log_base;}
-00046 
-00047 #endif//glm_gtx_log_base
-
-
- - - diff --git a/doc/api-0.9.2/a00071_source.html b/doc/api-0.9.2/a00071_source.html deleted file mode 100644 index e1861467..00000000 --- a/doc/api-0.9.2/a00071_source.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -matrix_access.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_access.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-27
-00005 // Updated : 2010-11-12
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/matrix_access.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtc_matrix_access
-00014 #define glm_gtc_matrix_access
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTC_matrix_access extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtc{
-00025 namespace matrix_access 
-00026 {
-00029 
-00032         template <typename genType> 
-00033         typename genType::row_type row(
-00034                 genType const & m, 
-00035                 int index);
-00036 
-00039     template <typename genType> 
-00040         genType row(
-00041                 genType const & m, 
-00042                 int index, 
-00043                 typename genType::row_type const & x);
-00044 
-00047         template <typename genType> 
-00048         typename genType::col_type column(
-00049                 genType const & m, 
-00050                 int index);
-00051 
-00054         template <typename genType> 
-00055         genType column(
-00056                 genType const & m, 
-00057                 int index, 
-00058                 typename genType::col_type const & x);
-00059 
-00061 
-00062 }//namespace matrix_access
-00063 }//namespace gtc
-00064 }//namespace glm
-00065 
-00066 #include "matrix_access.inl"
-00067 
-00068 namespace glm{using namespace gtc::matrix_access;}
-00069 
-00070 #endif//glm_gtc_matrix_access
-
-
- - - diff --git a/doc/api-0.9.2/a00072_source.html b/doc/api-0.9.2/a00072_source.html deleted file mode 100644 index dc8c8a67..00000000 --- a/doc/api-0.9.2/a00072_source.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -matrix_cross_product.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_cross_product.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/matrix_cross_product.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_matrix_cross_product
-00014 #define glm_gtx_matrix_cross_product
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace matrix_cross_product 
-00026 {
-00029 
-00032         template <typename T> 
-00033         detail::tmat3x3<T> matrixCross3(
-00034                 detail::tvec3<T> const & x);
-00035                 
-00038         template <typename T> 
-00039         detail::tmat4x4<T> matrixCross4(
-00040                 detail::tvec3<T> const & x);
-00041 
-00043 }//namespace matrix_cross_product
-00044 }//namespace gtx
-00045 }//namespace glm
-00046 
-00047 #include "matrix_cross_product.inl"
-00048 
-00049 namespace glm{using namespace gtx::matrix_cross_product;}
-00050 
-00051 #endif//glm_gtx_matrix_cross_product
-
-
- - - diff --git a/doc/api-0.9.2/a00074_source.html b/doc/api-0.9.2/a00074_source.html deleted file mode 100644 index 05b3f345..00000000 --- a/doc/api-0.9.2/a00074_source.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -matrix_interpolation.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_interpolation.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2011-03-05
-00005 // Updated : 2011-03-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/matrix_interpolation.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_matric_interpolation
-00013 // This extension has been written by Ghenadii Ursachi (the.asteroth@gmail.com)
-00015 
-00016 #ifndef glm_gtx_matrix_interpolation
-00017 #define glm_gtx_matrix_interpolation
-00018 
-00019 // Dependency:
-00020 //#include "../glm.hpp"
-00021 
-00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00023 #       pragma message("GLM: GLM_GTX_matrix_interpolation extension included")
-00024 #endif
-00025 
-00026 namespace glm{
-00027 namespace gtx{
-00028 namespace matrix_interpolation 
-00029 {
-00032 
-00035         template <typename T>
-00036     void axisAngle(
-00037         detail::tmat4x4<T> const & mat,
-00038         detail::tvec3<T> & axis,
-00039         T & angle);
-00040 
-00043         template <typename T>
-00044     detail::tmat4x4<T> axisAngleMatrix(
-00045         detail::tvec3<T> const & axis,
-00046         T const angle);
-00047 
-00051         template <typename T>
-00052     detail::tmat4x4<T> interpolate(
-00053         detail::tmat4x4<T> const & m1,
-00054         detail::tmat4x4<T> const & m2,
-00055         T const delta);
-00056 
-00058 }//namespace matrix_interpolation
-00059 }//namespace gtx
-00060 }//namespace glm
-00061 
-00062 #include "matrix_interpolation.inl"
-00063 
-00064 namespace glm{using namespace gtx::matrix_interpolation;}
-00065 
-00066 #endif//glm_gtx_transform
-
-
- - - diff --git a/doc/api-0.9.2/a00075_source.html b/doc/api-0.9.2/a00075_source.html deleted file mode 100644 index 5fd39cb9..00000000 --- a/doc/api-0.9.2/a00075_source.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -matrix_inverse.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_inverse.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2010-12-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/matrix_inverse.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtc_matrix_inverse
-00014 #define glm_gtc_matrix_inverse
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTC_matrix_inverse extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtc{
-00025 namespace matrix_inverse 
-00026 {
-00029 
-00032         template <typename genType> 
-00033         genType affineInverse(genType const & m);
-00034 
-00037         template <typename genType> 
-00038         GLM_FUNC_QUALIFIER typename genType::value_type inverseTranspose(
-00039                 genType const & m);
-00040 
-00042 
-00043 }//namespace matrix_inverse
-00044 }//namespace gtc
-00045 }//namespace glm
-00046 
-00047 #include "matrix_inverse.inl"
-00048 
-00049 namespace glm{using namespace gtc::matrix_inverse;}
-00050 
-00051 #endif//glm_gtc_matrix_inverse
-
-
- - - diff --git a/doc/api-0.9.2/a00076_source.html b/doc/api-0.9.2/a00076_source.html deleted file mode 100644 index 02e3ffc5..00000000 --- a/doc/api-0.9.2/a00076_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -matrix_major_storage.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_major_storage.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-04-19
-00005 // Updated : 2009-02-19
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/matrix_major_storage.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_matrix_major_storage
-00014 #define glm_gtx_matrix_major_storage
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace matrix_major_storage 
-00026 {
-00029 
-00032         template <typename T> 
-00033         detail::tmat2x2<T> rowMajor2(
-00034                 const detail::tvec2<T>& v1, 
-00035                 const detail::tvec2<T>& v2);
-00036                 
-00039         template <typename T> 
-00040         detail::tmat2x2<T> rowMajor2(
-00041                 const detail::tmat2x2<T>& m);
-00042 
-00045         template <typename T> 
-00046         detail::tmat3x3<T> rowMajor3(
-00047                 const detail::tvec3<T>& v1, 
-00048                 const detail::tvec3<T>& v2, 
-00049                 const detail::tvec3<T>& v3);
-00050 
-00053         template <typename T> 
-00054         detail::tmat3x3<T> rowMajor3(
-00055                 const detail::tmat3x3<T>& m);
-00056 
-00059         template <typename T> 
-00060         detail::tmat4x4<T> rowMajor4(
-00061                 const detail::tvec4<T>& v1, 
-00062                 const detail::tvec4<T>& v2,
-00063                 const detail::tvec4<T>& v3, 
-00064                 const detail::tvec4<T>& v4);
-00065 
-00068         template <typename T> 
-00069         detail::tmat4x4<T> rowMajor4(
-00070                 const detail::tmat4x4<T>& m);
-00071 
-00074         template <typename T> 
-00075         detail::tmat2x2<T> colMajor2(
-00076                 const detail::tvec2<T>& v1, 
-00077                 const detail::tvec2<T>& v2);
-00078                 
-00081         template <typename T> 
-00082         detail::tmat2x2<T> colMajor2(
-00083                 const detail::tmat2x2<T>& m);
-00084 
-00087         template <typename T> 
-00088         detail::tmat3x3<T> colMajor3(
-00089                 const detail::tvec3<T>& v1, 
-00090                 const detail::tvec3<T>& v2, 
-00091                 const detail::tvec3<T>& v3);
-00092                 
-00095         template <typename T> 
-00096         detail::tmat3x3<T> colMajor3(
-00097                 const detail::tmat3x3<T>& m);
-00098                 
-00101         template <typename T> 
-00102         detail::tmat4x4<T> colMajor4(
-00103                 const detail::tvec4<T>& v1, 
-00104                 const detail::tvec4<T>& v2, 
-00105                 const detail::tvec4<T>& v3, 
-00106                 const detail::tvec4<T>& v4);
-00107                                 
-00110         template <typename T> 
-00111         detail::tmat4x4<T> colMajor4(
-00112                 const detail::tmat4x4<T>& m);
-00113 
-00115 }//namespace matrix_major_storage
-00116 }//namespace gtx
-00117 }//namespace glm
-00118 
-00119 #include "matrix_major_storage.inl"
-00120 
-00121 namespace glm{using namespace gtx::matrix_major_storage;}
-00122 
-00123 #endif//glm_gtx_matrix_major_storage
-
-
- - - diff --git a/doc/api-0.9.2/a00077_source.html b/doc/api-0.9.2/a00077_source.html deleted file mode 100644 index a2f0a74e..00000000 --- a/doc/api-0.9.2/a00077_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - -matrix_operation.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_operation.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-08-29
-00005 // Updated : 2009-08-29
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/matrix_operation.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_matrix_operation
-00014 #define glm_gtx_matrix_operation
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_matrix_operation extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace matrix_operation 
-00026 {
-00029 
-00032         template <typename valType> 
-00033         detail::tmat2x2<valType> diagonal2x2(
-00034                 detail::tvec2<valType> const & v);
-00035 
-00038         template <typename valType> 
-00039         detail::tmat2x3<valType> diagonal2x3(
-00040                 detail::tvec2<valType> const & v);
-00041 
-00044         template <typename valType> 
-00045         detail::tmat2x4<valType> diagonal2x4(
-00046                 detail::tvec2<valType> const & v);
-00047 
-00050         template <typename valType> 
-00051         detail::tmat3x2<valType> diagonal3x2(
-00052                 detail::tvec2<valType> const & v);
-00053 
-00056         template <typename valType> 
-00057         detail::tmat3x3<valType> diagonal3x3(
-00058                 detail::tvec3<valType> const & v);
-00059 
-00062         template <typename valType> 
-00063         detail::tmat3x4<valType> diagonal3x4(
-00064                 detail::tvec3<valType> const & v);
-00065 
-00068         template <typename valType> 
-00069         detail::tmat4x2<valType> diagonal4x2(
-00070                 detail::tvec2<valType> const & v);
-00071 
-00074         template <typename valType> 
-00075         detail::tmat4x3<valType> diagonal4x3(
-00076                 detail::tvec3<valType> const & v);
-00077 
-00080         template <typename valType> 
-00081         detail::tmat4x4<valType> diagonal4x4(
-00082                 detail::tvec4<valType> const & v);
-00083 
-00085 }//namespace matrix_operation
-00086 }//namespace gtx
-00087 }//namespace glm
-00088 
-00089 #include "matrix_operation.inl"
-00090 
-00091 namespace glm{using namespace gtx::matrix_operation;}
-00092 
-00093 #endif//glm_gtx_matrix_operation
-
-
- - - diff --git a/doc/api-0.9.2/a00078_source.html b/doc/api-0.9.2/a00078_source.html deleted file mode 100644 index cba9c6f5..00000000 --- a/doc/api-0.9.2/a00078_source.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - -matrix_query.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_query.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-03-05
-00005 // Updated : 2007-03-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/matrix_query.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_matrix_query
-00013 
-00014 #ifndef glm_gtx_matrix_query
-00015 #define glm_gtx_matrix_query
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_matrix_query extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace matrix_query 
-00027 {
-00030 
-00033         template<typename T> 
-00034         bool isNull(
-00035                 const detail::tmat2x2<T>& m, 
-00036                 const T epsilon = std::numeric_limits<T>::epsilon());
-00037                 
-00040         template<typename T> 
-00041         bool isNull(
-00042                 const detail::tmat3x3<T>& m, 
-00043                 const T epsilon = std::numeric_limits<T>::epsilon());
-00044                 
-00047         template<typename T> 
-00048         bool isNull(
-00049                 const detail::tmat4x4<T>& m, 
-00050                 const T epsilon = std::numeric_limits<T>::epsilon());
-00051                         
-00054         template<typename genType> 
-00055         bool isIdentity(
-00056                 const genType& m, 
-00057                 const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00058 
-00061         template<typename T> 
-00062         bool isNormalized(
-00063                 const detail::tmat2x2<T>& m, 
-00064                 const T epsilon = std::numeric_limits<T>::epsilon());
-00065                 
-00068         template<typename T> 
-00069         bool isNormalized(
-00070                 const detail::tmat3x3<T>& m, 
-00071                 const T epsilon = std::numeric_limits<T>::epsilon());
-00072                 
-00075         template<typename T> 
-00076         bool isNormalized(
-00077                 const detail::tmat4x4<T>& m, 
-00078                 const T epsilon = std::numeric_limits<T>::epsilon());
-00079 
-00082         template<typename genType> 
-00083         bool isOrthogonal(
-00084                 const genType& m, 
-00085                 const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00086 
-00088 }//namespace matrix_query
-00089 }//namespace gtx
-00090 }//namespace glm
-00091 
-00092 #include "matrix_query.inl"
-00093 
-00094 namespace glm{using namespace gtx::matrix_query;}
-00095 
-00096 #endif//glm_gtx_matrix_query
-
-
- - - diff --git a/doc/api-0.9.2/a00079_source.html b/doc/api-0.9.2/a00079_source.html deleted file mode 100644 index 3115f7dd..00000000 --- a/doc/api-0.9.2/a00079_source.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - -matrix_transform.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
matrix_transform.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-04-29
-00005 // Updated : 2009-04-29
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/matrix_transform.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_matrix_operation
-00013 
-00014 #ifndef glm_gtc_matrix_transform
-00015 #define glm_gtc_matrix_transform
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTC_matrix_transform extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtc{
-00026 namespace matrix_transform 
-00027 {
-00030 
-00033         template <typename T> 
-00034         detail::tmat4x4<T> translate(
-00035                 detail::tmat4x4<T> const & m,
-00036                 detail::tvec3<T> const & v);
-00037                 
-00040         template <typename T> 
-00041         detail::tmat4x4<T> rotate(
-00042                 detail::tmat4x4<T> const & m,
-00043                 T const & angle, 
-00044                 detail::tvec3<T> const & v);
-00045 
-00048         template <typename T> 
-00049         detail::tmat4x4<T> scale(
-00050                 detail::tmat4x4<T> const & m,
-00051                 detail::tvec3<T> const & v);
-00052 
-00055         template <typename T> 
-00056         detail::tmat4x4<T> ortho(
-00057                 T const & left, 
-00058                 T const & right, 
-00059                 T const & bottom, 
-00060                 T const & top, 
-00061                 T const & zNear, 
-00062                 T const & zFar);
-00063 
-00066     template <typename T> 
-00067         detail::tmat4x4<T> ortho(
-00068                 T const & left, 
-00069                 T const & right, 
-00070                 T const & bottom, 
-00071                 T const & top);
-00072 
-00075         template <typename T> 
-00076         detail::tmat4x4<T> frustum(
-00077                 T const & left, 
-00078                 T const & right, 
-00079                 T const & bottom, 
-00080                 T const & top, 
-00081                 T const & nearVal, 
-00082                 T const & farVal);
-00083 
-00086         template <typename T> 
-00087         detail::tmat4x4<T> perspective(
-00088                 T const & fovy, 
-00089                 T const & aspect, 
-00090                 T const & zNear, 
-00091                 T const & zFar);
-00092 
-00095         template <typename valType> 
-00096         detail::tmat4x4<valType> perspectiveFov(
-00097                 valType const & fov, 
-00098                 valType const & width, 
-00099                 valType const & height, 
-00100                 valType const & zNear, 
-00101                 valType const & zFar);
-00102 
-00105     template <typename T> 
-00106         detail::tmat4x4<T> infinitePerspective(
-00107                 T fovy, T aspect, T zNear);
-00108 
-00111     template <typename T> 
-00112         detail::tmat4x4<T> tweakedInfinitePerspective(
-00113                 T fovy, T aspect, T zNear);
-00114 
-00117         template <typename T, typename U> 
-00118         detail::tvec3<T> project(
-00119                 detail::tvec3<T> const & obj, 
-00120                 detail::tmat4x4<T> const & model, 
-00121                 detail::tmat4x4<T> const & proj, 
-00122                 detail::tvec4<U> const & viewport);
-00123 
-00126         template <typename T, typename U> 
-00127         detail::tvec3<T> unProject(
-00128                 detail::tvec3<T> const & win, 
-00129                 detail::tmat4x4<T> const & model, 
-00130                 detail::tmat4x4<T> const & proj, 
-00131                 detail::tvec4<U> const & viewport);
-00132 
-00135         template <typename T, typename U> 
-00136         detail::tmat4x4<T> pickMatrix(
-00137                 detail::tvec2<T> const & center, 
-00138                 detail::tvec2<T> const & delta, 
-00139                 detail::tvec4<U> const & viewport);
-00140 
-00143         template <typename T> 
-00144         detail::tmat4x4<T> lookAt(
-00145                 detail::tvec3<T> const & eye, 
-00146                 detail::tvec3<T> const & center, 
-00147                 detail::tvec3<T> const & up);
-00148 
-00150 }//namespace matrix_transform
-00151 }//namespace gtc
-00152 }//namespace glm
-00153 
-00154 #include "matrix_transform.inl"
-00155 
-00156 namespace glm{using namespace gtc::matrix_transform;}
-00157 
-00158 #endif//glm_gtc_matrix_transform
-
-
- - - diff --git a/doc/api-0.9.2/a00080_source.html b/doc/api-0.9.2/a00080_source.html deleted file mode 100644 index 08267aa8..00000000 --- a/doc/api-0.9.2/a00080_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -mixed_product.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
mixed_product.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-04-03
-00005 // Updated : 2008-09-17
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/mixed_product.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_mixed_product
-00014 #define glm_gtx_mixed_product
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_mixed_product extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace mixed_product 
-00026 {
-00029 
-00031         template <typename valType> 
-00032         valType mixedProduct(
-00033                 detail::tvec3<valType> const & v1, 
-00034                 detail::tvec3<valType> const & v2, 
-00035                 detail::tvec3<valType> const & v3);
-00036 
-00038 }// namespace mixed_product
-00039 }// namespace gtx
-00040 }// namespace glm
-00041 
-00042 #include "mixed_product.inl"
-00043 
-00044 namespace glm{using namespace gtx::mixed_product;}
-00045 
-00046 #endif//glm_gtx_mixed_product
-
-
- - - diff --git a/doc/api-0.9.2/a00081_source.html b/doc/api-0.9.2/a00081_source.html deleted file mode 100644 index 35246bcb..00000000 --- a/doc/api-0.9.2/a00081_source.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -multiple.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
multiple.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-10-26
-00005 // Updated : 2009-10-26
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/multiple.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_multiple
-00014 #define glm_gtx_multiple
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_multiple extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace multiple 
-00026 {
-00029 
-00032         template <typename genType> 
-00033         genType higherMultiple(
-00034                 genType const & Source, 
-00035                 genType const & Multiple);
-00036 
-00039         template <typename genType> 
-00040         genType lowerMultiple(
-00041                 genType const & Source, 
-00042                 genType const & Multiple);
-00043 
-00045 }//namespace multiple
-00046 }//namespace gtx
-00047 }//namespace glm
-00048 
-00049 #include "multiple.inl"
-00050 
-00051 namespace glm{using namespace gtx::multiple;}
-00052 
-00053 #endif//glm_gtx_multiple
-
-
- - - diff --git a/doc/api-0.9.2/a00082_source.html b/doc/api-0.9.2/a00082_source.html deleted file mode 100644 index fc850940..00000000 --- a/doc/api-0.9.2/a00082_source.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -noise.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
noise.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": 
-00005 // https://github.com/ashima/webgl-noise 
-00006 // Following Stefan Gustavson's paper "Simplex noise demystified": 
-00007 // http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf
-00009 // Created : 2011-04-21
-00010 // Updated : 2011-04-21
-00011 // Licence : This source is under MIT License
-00012 // File    : glm/gtx/noise.hpp
-00014 // Dependency:
-00015 // - GLM core
-00017 
-00018 #ifndef glm_gtx_noise
-00019 #define glm_gtx_noise
-00020 
-00021 // Dependency:
-00022 #include "../glm.hpp"
-00023 
-00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00025 #       pragma message("GLM: GLM_GTX_noise extension included")
-00026 #endif
-00027 
-00028 namespace glm{
-00029 namespace gtx{
-00030 namespace noise 
-00031 {
-00034 
-00037         template <typename T, template<typename> class vecType> 
-00038     T perlin(
-00039                 vecType<T> const & p);
-00040                 
-00043         template <typename T, template<typename> class vecType> 
-00044     T perlin(
-00045                 vecType<T> const & p, 
-00046                 vecType<T> const & rep);
-00047 
-00050         template <typename T, template<typename> class vecType> 
-00051     T simplex(
-00052                 vecType<T> const & p);
-00053 
-00055 }//namespace noise
-00056 }//namespace gtx
-00057 }//namespace glm
-00058 
-00059 #include "noise.inl"
-00060 
-00061 namespace glm{using namespace gtx::noise;}
-00062 
-00063 #endif//glm_gtx_noise
-
-
- - - diff --git a/doc/api-0.9.2/a00083_source.html b/doc/api-0.9.2/a00083_source.html deleted file mode 100644 index 14c9288e..00000000 --- a/doc/api-0.9.2/a00083_source.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - -norm.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
norm.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2008-07-24
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/norm.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_quaternion
-00013 // ToDo:
-00014 // - Study the validity of the notion of length2 to quaternion
-00016 
-00017 #ifndef glm_gtx_norm
-00018 #define glm_gtx_norm
-00019 
-00020 // Dependency:
-00021 #include "../glm.hpp"
-00022 #include "../gtx/quaternion.hpp"
-00023 
-00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00025 #       pragma message("GLM: GLM_GTX_norm extension included")
-00026 #endif
-00027 
-00028 namespace glm{
-00029 namespace gtx{
-00030 namespace norm 
-00031 {
-00034 
-00037         template <typename T> 
-00038         T length2(
-00039                 const T x);
-00040 
-00043         template <typename T> 
-00044         T length2(
-00045                 const detail::tvec2<T> & x);
-00046 
-00049         template <typename T>
-00050         T length2(
-00051                 const detail::tvec3<T>& x);
-00052                 
-00055         template <typename T> 
-00056         T length2(
-00057                 const detail::tvec4<T>& x);
-00058                 
-00061         template <typename T>
-00062         T length2(
-00063                 const detail::tquat<T>& q);
-00064 
-00067         template <typename T>
-00068         T distance2(
-00069                 const T p0, 
-00070                 const T p1);
-00071                 
-00074         template <typename T> 
-00075         T distance2(
-00076                 const detail::tvec2<T>& p0, 
-00077                 const detail::tvec2<T>& p1);
-00078 
-00081         template <typename T>
-00082         T distance2(
-00083                 const detail::tvec3<T>& p0,
-00084                 const detail::tvec3<T>& p1);
-00085 
-00088         template <typename T>
-00089         T distance2(
-00090                 const detail::tvec4<T>& p0, 
-00091                 const detail::tvec4<T>& p1);
-00092 
-00095         template <typename T>
-00096         T l1Norm(
-00097                 const detail::tvec3<T>& x,
-00098                 const detail::tvec3<T>& y);
-00099                 
-00102         template <typename T> 
-00103         T l1Norm(
-00104                 const detail::tvec3<T>& v);
-00105                 
-00108         template <typename T> 
-00109         T l2Norm(
-00110                 const detail::tvec3<T>& x, 
-00111                 const detail::tvec3<T>& y);
-00112                 
-00115         template <typename T> 
-00116         T l2Norm(
-00117                 const detail::tvec3<T>& x);
-00118                 
-00121         template <typename T> 
-00122         T lxNorm(
-00123                 const detail::tvec3<T>& x,
-00124                 const detail::tvec3<T>& y,
-00125                 unsigned int Depth);
-00126 
-00129         template <typename T>
-00130         T lxNorm(
-00131                 const detail::tvec3<T>& x,
-00132                 unsigned int Depth);
-00133 
-00135 }//namespace norm
-00136 }//namespace gtx
-00137 }//namespace glm
-00138 
-00139 #include "norm.inl"
-00140 
-00141 namespace glm{using namespace gtx::norm;}
-00142 
-00143 #endif//glm_gtx_norm
-
-
- - - diff --git a/doc/api-0.9.2/a00084_source.html b/doc/api-0.9.2/a00084_source.html deleted file mode 100644 index a9f8d3cd..00000000 --- a/doc/api-0.9.2/a00084_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -normal.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
normal.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/normal.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_normal
-00014 #define glm_gtx_normal
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_normal extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace normal 
-00026 {
-00029 
-00032     template <typename T> 
-00033         detail::tvec3<T> triangleNormal(
-00034                 detail::tvec3<T> const & p1, 
-00035                 detail::tvec3<T> const & p2, 
-00036                 detail::tvec3<T> const & p3);
-00037 
-00039 }//namespace normal
-00040 }//namespace gtx
-00041 }//namespace glm
-00042 
-00043 #include "normal.inl"
-00044 
-00045 namespace glm{using namespace gtx::normal;}
-00046 
-00047 #endif//glm_gtx_normal
-
-
- - - diff --git a/doc/api-0.9.2/a00085_source.html b/doc/api-0.9.2/a00085_source.html deleted file mode 100644 index b2f869de..00000000 --- a/doc/api-0.9.2/a00085_source.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -normalize_dot.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
normalize_dot.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-09-28
-00005 // Updated : 2008-10-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/normalize_dot.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_fast_square_root
-00013 
-00014 #ifndef glm_gtx_normalize_dot
-00015 #define glm_gtx_normalize_dot
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtx/fast_square_root.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_normalize_dot extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace normalize_dot 
-00028 {
-00029         using namespace gtx::fast_square_root;
-00030 
-00033 
-00037         template <typename genType> 
-00038         typename genType::value_type normalizeDot(
-00039                 genType const & x, 
-00040                 genType const & y);
-00041 
-00045         template <typename genType> 
-00046         typename genType::value_type fastNormalizeDot(
-00047                 genType const & x, 
-00048                 genType const & y);
-00049 
-00051 }//namespace normalize_dot
-00052 }//namespace gtx
-00053 }//namespace glm
-00054 
-00055 #include "normalize_dot.inl"
-00056 
-00057 namespace glm{using namespace gtx::normalize_dot;}
-00058 
-00059 #endif//glm_gtx_normalize_dot
-
-
- - - diff --git a/doc/api-0.9.2/a00086_source.html b/doc/api-0.9.2/a00086_source.html deleted file mode 100644 index 6e6f5050..00000000 --- a/doc/api-0.9.2/a00086_source.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - -number_precision.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
number_precision.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-05-10
-00005 // Updated : 2009-06-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/number_precision.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_type_precision
-00012 // - GLM_GTC_quaternion
-00014 
-00015 #ifndef glm_gtx_number_precision
-00016 #define glm_gtx_number_precision
-00017 
-00018 // Dependency:
-00019 #include "../glm.hpp"
-00020 #include "../gtc/type_precision.hpp"
-00021 
-00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00023 #       pragma message("GLM: GLM_GTX_number_precision extension included")
-00024 #endif
-00025 
-00026 namespace glm{
-00027 namespace gtx{
-00028 namespace number_precision 
-00029 {
-00030         using namespace gtc::type_precision;
-00031 
-00033         // Unsigned int vector types 
-00034 
-00037 
-00038         typedef u8                      u8vec1;         
-00039         typedef u16                     u16vec1;    
-00040         typedef u32                     u32vec1;    
-00041         typedef u64                     u64vec1;    
-00042 
-00044         // Float vector types 
-00045 
-00046         typedef f16                     f16vec1;    
-00047         typedef f32                     f32vec1;    
-00048         typedef f64                     f64vec1;    
-00049 
-00051         // Float matrix types 
-00052 
-00053         typedef f16                     f16mat1;    
-00054         typedef f16                     f16mat1x1;      
-00055         typedef f32                     f32mat1;        
-00056         typedef f32                     f32mat1x1;      
-00057         typedef f64                     f64mat1;        
-00058         typedef f64                     f64mat1x1;      
-00059 
-00061 }//namespace number_precision
-00062 }//namespace gtx
-00063 }//namespace glm
-00064 
-00065 #include "number_precision.inl"
-00066 
-00067 namespace glm{using namespace gtx::number_precision;}
-00068 
-00069 #endif//glm_gtx_number_precision
-
-
- - - diff --git a/doc/api-0.9.2/a00087_source.html b/doc/api-0.9.2/a00087_source.html deleted file mode 100644 index dd8eb634..00000000 --- a/doc/api-0.9.2/a00087_source.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - -ocl_type.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
ocl_type.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-07
-00005 // Updated : 2009-05-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/number_precision.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_ocl_type
-00014 #define glm_gtx_ocl_type
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_ocl_type extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace ocl_type 
-00026 {
-00028         // Scalar types 
-00029 
-00032 
-00033         typedef detail::int8                                            cl_char;                
-00034         typedef detail::int16                                           cl_short;               
-00035         typedef detail::int32                                           cl_int;                 
-00036         typedef detail::int64                                           cl_long;                
-00037 
-00038         typedef detail::uint8                                           cl_uchar;               
-00039         typedef detail::uint16                                          cl_ushort;              
-00040         typedef detail::uint32                                          cl_uint;                
-00041         typedef detail::uint64                                          cl_ulong;               
-00042 
-00043         typedef detail::float16                                         cl_half;        
-00044         typedef detail::float32                                         cl_float;       
-00045 
-00046 
-00047         typedef detail::int8                                            cl_char1;               
-00048         typedef detail::int16                                           cl_short1;              
-00049         typedef detail::int32                                           cl_int1;                        
-00050         typedef detail::int64                                           cl_long1;               
-00051 
-00052         typedef detail::uint8                                           cl_uchar1;              
-00053         typedef detail::uint16                                          cl_ushort1;             
-00054         typedef detail::uint32                                          cl_uint1;               
-00055         typedef detail::uint64                                          cl_ulong1;              
-00056 
-00057         //typedef detail::float16                                               cl_half1;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
-00058         typedef detail::float32                                         cl_float1;      
-00059 
-00060 
-00061         typedef detail::tvec2<detail::int8>                     cl_char2;               
-00062         typedef detail::tvec2<detail::int16>            cl_short2;              
-00063         typedef detail::tvec2<detail::int32>            cl_int2;                        
-00064         typedef detail::tvec2<detail::int64>            cl_long2;               
-00065 
-00066         typedef detail::tvec2<detail::uint8>            cl_uchar2;              
-00067         typedef detail::tvec2<detail::uint16>           cl_ushort2;             
-00068         typedef detail::tvec2<detail::uint32>           cl_uint2;               
-00069         typedef detail::tvec2<detail::uint64>           cl_ulong2;              
-00070 
-00071         //typedef detail::tvec2<detail::float16>                cl_half2;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
-00072         typedef detail::tvec2<detail::float32>          cl_float2;      
-00073 
-00074 
-00075         typedef detail::tvec3<detail::int8>                     cl_char3;               
-00076         typedef detail::tvec3<detail::int16>            cl_short3;              
-00077         typedef detail::tvec3<detail::int32>            cl_int3;                        
-00078         typedef detail::tvec3<detail::int64>            cl_long3;               
-00079 
-00080         typedef detail::tvec3<detail::uint8>            cl_uchar3;              
-00081         typedef detail::tvec3<detail::uint16>           cl_ushort3;             
-00082         typedef detail::tvec3<detail::uint32>           cl_uint3;               
-00083         typedef detail::tvec3<detail::uint64>           cl_ulong3;              
-00084 
-00085         //typedef detail::tvec3<detail::float16>                cl_half3;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
-00086         typedef detail::tvec3<detail::float32>          cl_float3;      
-00087 
-00088 
-00089         typedef detail::tvec4<detail::int8>                     cl_char4;               
-00090         typedef detail::tvec4<detail::int16>            cl_short4;              
-00091         typedef detail::tvec4<detail::int32>            cl_int4;                        
-00092         typedef detail::tvec4<detail::int64>            cl_long4;               
-00093         typedef detail::tvec4<detail::uint8>            cl_uchar4;              
-00094         typedef detail::tvec4<detail::uint16>           cl_ushort4;             
-00095         typedef detail::tvec4<detail::uint32>           cl_uint4;               
-00096         typedef detail::tvec4<detail::uint64>           cl_ulong4;              
-00097 
-00098         //typedef detail::tvec4<detail::float16>                cl_half4;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
-00099         typedef detail::tvec4<detail::float32>          cl_float4;      
-00100 
-00102 }//namespace ocl_type
-00103 }//namespace gtx
-00104 }//namespace glm
-00105 
-00106 #include "ocl_type.inl"
-00107 
-00108 namespace glm{using namespace gtx::ocl_type;}
-00109 
-00110 #endif//glm_gtx_ocl_type
-
-
- - - diff --git a/doc/api-0.9.2/a00088_source.html b/doc/api-0.9.2/a00088_source.html deleted file mode 100644 index e5798135..00000000 --- a/doc/api-0.9.2/a00088_source.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -optimum_pow.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
optimum_pow.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/optimum_pow.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_optimum_pow
-00014 #define glm_gtx_optimum_pow
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_optimum_pow extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace optimum_pow 
-00026 {
-00029 
-00032     template <typename genType> 
-00033         genType pow2(const genType& x);
-00034 
-00037     template <typename genType> 
-00038         genType pow3(const genType& x);
-00039 
-00042         template <typename genType> 
-00043         genType pow4(const genType& x);
-00044         
-00047     bool powOfTwo(int num);
-00048 
-00051     detail::tvec2<bool> powOfTwo(const detail::tvec2<int>& x);
-00052 
-00055     detail::tvec3<bool> powOfTwo(const detail::tvec3<int>& x);
-00056 
-00059     detail::tvec4<bool> powOfTwo(const detail::tvec4<int>& x);
-00060 
-00062 }//namespace optimum_pow
-00063 }//namespace gtx
-00064 }//namespace glm
-00065 
-00066 #include "optimum_pow.inl"
-00067 
-00068 namespace glm{using namespace gtx::optimum_pow;}
-00069 
-00070 #endif//glm_gtx_optimum_pow
-
-
- - - diff --git a/doc/api-0.9.2/a00089_source.html b/doc/api-0.9.2/a00089_source.html deleted file mode 100644 index 244c37a0..00000000 --- a/doc/api-0.9.2/a00089_source.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -orthonormalize.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
orthonormalize.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/orthonormalize.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_orthonormalize
-00014 #define glm_gtx_orthonormalize
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_orthonormalize extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace orthonormalize 
-00026 {
-00029 
-00032         template <typename T> 
-00033         detail::tmat3x3<T> orthonormalize(
-00034                 const detail::tmat3x3<T>& m);
-00035                 
-00038         template <typename T> 
-00039         detail::tvec3<T> orthonormalize(
-00040                 const detail::tvec3<T>& x, 
-00041                 const detail::tvec3<T>& y);
-00042 
-00044 }//namespace orthonormalize
-00045 }//namespace gtx
-00046 }//namespace glm
-00047 
-00048 #include "orthonormalize.inl"
-00049 
-00050 namespace glm{using namespace gtx::orthonormalize;}
-00051 
-00052 #endif//glm_gtx_orthonormalize
-
-
- - - diff --git a/doc/api-0.9.2/a00091_source.html b/doc/api-0.9.2/a00091_source.html deleted file mode 100644 index b5c58035..00000000 --- a/doc/api-0.9.2/a00091_source.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -perpendicular.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
perpendicular.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2009-03-06
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/perpendicular.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_projection
-00013 
-00014 #ifndef glm_gtx_perpendicular
-00015 #define glm_gtx_perpendicular
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtx/projection.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_perpendicular extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace perpendicular 
-00028 {
-00031 
-00034         template <typename T> 
-00035         detail::tvec2<T> perp(
-00036                 detail::tvec2<T> const & x, 
-00037                 detail::tvec2<T> const & Normal);
-00038 
-00041         template <typename T> 
-00042         detail::tvec3<T> perp(
-00043                 detail::tvec3<T> const & x, 
-00044                 detail::tvec3<T> const & Normal);
-00045 
-00048         template <typename T> 
-00049         detail::tvec4<T> perp(
-00050                 detail::tvec4<T> const & x, 
-00051                 detail::tvec4<T> const & Normal);
-00052 
-00054 }//namespace perpendicular
-00055 }//namespace gtx
-00056 }//namespace glm
-00057 
-00058 #include "perpendicular.inl"
-00059 
-00060 namespace glm{using namespace gtx::perpendicular;}
-00061 
-00062 #endif//glm_gtx_perpendicular
-
-
- - - diff --git a/doc/api-0.9.2/a00092_source.html b/doc/api-0.9.2/a00092_source.html deleted file mode 100644 index 2de0e0c2..00000000 --- a/doc/api-0.9.2/a00092_source.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -polar_coordinates.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
polar_coordinates.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-03-06
-00005 // Updated : 2009-05-01
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/polar_coordinates.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_polar_coordinates
-00014 #define glm_gtx_polar_coordinates
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_polar_coordinates extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace polar_coordinates 
-00026 {
-00029 
-00032         template <typename T> 
-00033         detail::tvec3<T> polar(const detail::tvec3<T>& euclidean);
-00034 
-00037         template <typename T> 
-00038         detail::tvec3<T> euclidean(const detail::tvec3<T>& polar);
-00039 
-00041 }//namespace polar_coordinates
-00042 }//namespace gtx
-00043 }//namespace glm
-00044 
-00045 #include "polar_coordinates.inl"
-00046 
-00047 namespace glm{using namespace gtx::polar_coordinates;}
-00048 
-00049 #endif//glm_gtx_polar_coordinates
-
-
- - - diff --git a/doc/api-0.9.2/a00093_source.html b/doc/api-0.9.2/a00093_source.html deleted file mode 100644 index df90dc5d..00000000 --- a/doc/api-0.9.2/a00093_source.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -projection.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
projection.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2009-03-06
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/projection.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_projection
-00014 #define glm_gtx_projection
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_projection extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace projection 
-00026 {
-00029 
-00032         template <typename T> 
-00033         detail::tvec2<T> proj(
-00034                 detail::tvec2<T> const & x, 
-00035                 detail::tvec2<T> const & Normal);
-00036                 
-00039         template <typename T> 
-00040         detail::tvec3<T> proj(
-00041                 detail::tvec3<T> const & x, 
-00042                 detail::tvec3<T> const & Normal);
-00043 
-00046         template <typename T> 
-00047         detail::tvec4<T> proj(
-00048                 detail::tvec4<T> const & x, 
-00049                 detail::tvec4<T> const & Normal);
-00050 
-00052 }//namespace projection
-00053 }//namespace gtx
-00054 }//namespace glm
-00055 
-00056 #include "projection.inl"
-00057 
-00058 namespace glm{using namespace gtx::projection;}
-00059 
-00060 #endif//glm_gtx_projection
-
-
- - - diff --git a/doc/api-0.9.2/a00094_source.html b/doc/api-0.9.2/a00094_source.html deleted file mode 100644 index f50c8ab7..00000000 --- a/doc/api-0.9.2/a00094_source.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - -quaternion.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
quaternion.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-21
-00005 // Updated : 2010-02-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/quaternion.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half_float
-00013 // ToDo:
-00014 // - Study constructors with angles and axis
-00015 // - Study constructors with vec3 that are the imaginary component of quaternion
-00017 
-00018 #ifndef glm_gtc_quaternion
-00019 #define glm_gtc_quaternion
-00020 
-00021 // Dependency:
-00022 #include "../glm.hpp"
-00023 #include "../gtc/half_float.hpp"
-00024 
-00025 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00026 #       pragma message("GLM: GLM_GTC_quaternion extension included")
-00027 #endif
-00028 
-00029 namespace glm{
-00030 namespace detail
-00031 {
-00035         template <typename T> 
-00036         struct tquat// : public genType<T, tquat>
-00037         {
-00038                 typedef T value_type;
-00039 
-00040         public:
-00041                 value_type x, y, z, w;
-00042 
-00043                 // Constructors
-00044                 tquat();
-00045                 explicit tquat(
-00046                         value_type const & s, 
-00047                         tvec3<T> const & v);
-00048                 explicit tquat(
-00049                         value_type const & w, 
-00050                         value_type const & x, 
-00051                         value_type const & y, 
-00052                         value_type const & z);
-00053 
-00054                 // Convertions
-00055                 //explicit tquat(valType const & pitch, valType const & yaw, valType const & roll);
-00057                 explicit tquat(
-00058                         tvec3<T> const & eulerAngles);
-00059                 explicit tquat(
-00060                         tmat3x3<T> const & m);
-00061                 explicit tquat(
-00062                         tmat4x4<T> const & m);
-00063 
-00064                 // Accesses
-00065                 value_type & operator[](int i);
-00066                 value_type const & operator[](int i) const;
-00067 
-00068                 // Operators
-00069                 tquat<T> & operator*=(value_type const & s);
-00070                 tquat<T> & operator/=(value_type const & s);
-00071         };
-00072 
-00073         template <typename T> 
-00074         detail::tquat<T> operator- (
-00075                 detail::tquat<T> const & q);
-00076 
-00077         template <typename T> 
-00078         detail::tquat<T> operator+ ( 
-00079                 detail::tquat<T> const & q, 
-00080                 detail::tquat<T> const & p); 
-00081 
-00082         template <typename T> 
-00083         detail::tquat<T> operator* ( 
-00084                 detail::tquat<T> const & q, 
-00085                 detail::tquat<T> const & p); 
-00086 
-00087         template <typename T> 
-00088         detail::tvec3<T> operator* (
-00089                 detail::tquat<T> const & q, 
-00090                 detail::tvec3<T> const & v);
-00091 
-00092         template <typename T> 
-00093         detail::tvec3<T> operator* (
-00094                 detail::tvec3<T> const & v,
-00095                 detail::tquat<T> const & q);
-00096 
-00097         template <typename T> 
-00098         detail::tvec4<T> operator* (
-00099                 detail::tquat<T> const & q, 
-00100                 detail::tvec4<T> const & v);
-00101 
-00102         template <typename T> 
-00103         detail::tvec4<T> operator* (
-00104                 detail::tvec4<T> const & v,
-00105                 detail::tquat<T> const & q);
-00106 
-00107         template <typename T> 
-00108         detail::tquat<T> operator* (
-00109                 detail::tquat<T> const & q, 
-00110                 typename detail::tquat<T>::value_type const & s);
-00111 
-00112         template <typename T> 
-00113         detail::tquat<T> operator* (
-00114                 typename detail::tquat<T>::value_type const & s,
-00115                 detail::tquat<T> const & q);
-00116 
-00117         template <typename T> 
-00118         detail::tquat<T> operator/ (
-00119                 detail::tquat<T> const & q, 
-00120                 typename detail::tquat<T>::value_type const & s);
-00121 
-00122 } //namespace detail
-00123 
-00124 namespace gtc{
-00125 namespace quaternion 
-00126 {
-00129 
-00132     template <typename T> 
-00133         typename detail::tquat<T>::value_type length(
-00134                 detail::tquat<T> const & q);
-00135 
-00138         template <typename T> 
-00139         detail::tquat<T> normalize(
-00140                 detail::tquat<T> const & q);
-00141                 
-00144         template <typename T> 
-00145         typename detail::tquat<T>::value_type dot(
-00146                 detail::tquat<T> const & q1, 
-00147                 detail::tquat<T> const & q2);
-00148 
-00151         template <typename T> 
-00152         GLM_DEPRECATED detail::tquat<T> cross(
-00153                 detail::tquat<T> const & q1, 
-00154                 detail::tquat<T> const & q2);
-00155                 
-00158         template <typename T> 
-00159         detail::tquat<T> mix(
-00160                 detail::tquat<T> const & x, 
-00161                 detail::tquat<T> const & y, 
-00162                 T const & a);
-00163                 
-00166     template <typename T> 
-00167         detail::tquat<T> conjugate(
-00168                 detail::tquat<T> const & q);
-00169 
-00172     template <typename T> 
-00173         detail::tquat<T> inverse(
-00174                 detail::tquat<T> const & q);
-00175 
-00178         template <typename T> 
-00179         detail::tquat<T> rotate(
-00180                 detail::tquat<T> const & q, 
-00181                 typename detail::tquat<T>::value_type const & angle, 
-00182                 detail::tvec3<T> const & v);
-00183 
-00186     template <typename T> 
-00187         detail::tmat3x3<T> mat3_cast(
-00188                 detail::tquat<T> const & x);
-00189 
-00192         template <typename T> 
-00193         detail::tmat4x4<T> mat4_cast(
-00194                 detail::tquat<T> const & x);
-00195 
-00198         template <typename T> 
-00199         detail::tquat<T> quat_cast(
-00200                 detail::tmat3x3<T> const & x);
-00201 
-00204         template <typename T> 
-00205         detail::tquat<T> quat_cast(
-00206                 detail::tmat4x4<T> const & x);
-00207 
-00210     typedef detail::tquat<float> quat;
-00211 
-00214         typedef detail::tquat<detail::thalf>    hquat;
-00215 
-00218         typedef detail::tquat<float>    fquat;
-00219 
-00222         typedef detail::tquat<double>   dquat;
-00223 
-00226         typedef detail::tquat<lowp_float>               lowp_quat;
-00227 
-00230         typedef detail::tquat<mediump_float>    mediump_quat;
-00231 
-00234         typedef detail::tquat<highp_float>              highp_quat;
-00236 
-00237 } //namespace quaternion
-00238 } //namespace gtc
-00239 } //namespace glm
-00240 
-00241 #include "quaternion.inl"
-00242 
-00243 namespace glm{using namespace gtc::quaternion;}
-00244 
-00245 #endif//glm_gtc_quaternion
-
-
- - - diff --git a/doc/api-0.9.2/a00095_source.html b/doc/api-0.9.2/a00095_source.html deleted file mode 100644 index a247ede5..00000000 --- a/doc/api-0.9.2/a00095_source.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - -quaternion.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
quaternion.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2009-05-21
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/quaternion.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 // ToDo:
-00013 // - Study constructors with angles and axis
-00014 // - Study constructors with vec3 that are the imaginary component of quaternion
-00016 
-00017 #ifndef glm_gtx_quaternion
-00018 #define glm_gtx_quaternion
-00019 
-00020 // Dependency:
-00021 #include "../glm.hpp"
-00022 #include "../gtc/quaternion.hpp"
-00023 
-00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00025 #       pragma message("GLM: GLM_GTX_quaternion extension included")
-00026 #endif
-00027 
-00028 namespace glm{
-00029 namespace gtx{
-00030 namespace quaternion 
-00031 {
-00032         using namespace gtc::quaternion;
-00033 
-00036 
-00039         template <typename valType> 
-00040         detail::tvec3<valType> cross(
-00041                 detail::tquat<valType> const & q, 
-00042                 detail::tvec3<valType> const & v);
-00043 
-00046         template <typename valType> 
-00047         detail::tvec3<valType> cross(
-00048                 detail::tvec3<valType> const & v, 
-00049                 detail::tquat<valType> const & q);
-00050 
-00054         template <typename valType> 
-00055         detail::tquat<valType> squad(
-00056                 detail::tquat<valType> const & q1, 
-00057                 detail::tquat<valType> const & q2, 
-00058                 detail::tquat<valType> const & s1, 
-00059                 detail::tquat<valType> const & s2, 
-00060                 valType const & h);
-00061 
-00064         template <typename valType> 
-00065         detail::tquat<valType> intermediate(
-00066                 detail::tquat<valType> const & prev, 
-00067                 detail::tquat<valType> const & curr, 
-00068                 detail::tquat<valType> const & next);
-00069 
-00072     template <typename valType> 
-00073         detail::tquat<valType> exp(
-00074                 detail::tquat<valType> const & q, 
-00075                 valType const & exponent);
-00076 
-00079     template <typename valType> 
-00080         detail::tquat<valType> log(
-00081                 detail::tquat<valType> const & q);
-00082 
-00085     template <typename valType> 
-00086         detail::tquat<valType> pow(
-00087                 detail::tquat<valType> const & x, 
-00088                 valType const & y);
-00089 
-00092         //template <typename valType> 
-00093         //detail::tquat<valType> sqrt(
-00094         //      detail::tquat<valType> const & q);
-00095 
-00098         template <typename valType> 
-00099         detail::tvec3<valType> rotate(
-00100                 detail::tquat<valType> const & q, 
-00101                 detail::tvec3<valType> const & v);
-00102 
-00105         template <typename valType> 
-00106         detail::tvec4<valType> rotate(
-00107                 detail::tquat<valType> const & q, 
-00108                 detail::tvec4<valType> const & v);
-00109                 
-00112         template <typename valType> 
-00113         valType angle(
-00114                 detail::tquat<valType> const & x);
-00115 
-00118         template <typename valType> 
-00119         detail::tvec3<valType> axis(
-00120                 detail::tquat<valType> const & x);
-00121 
-00124         template <typename valType> 
-00125         detail::tquat<valType> angleAxis(
-00126                 valType const & angle, 
-00127                 valType const & x, 
-00128                 valType const & y, 
-00129                 valType const & z);
-00130 
-00133         template <typename valType> 
-00134         detail::tquat<valType> angleAxis(
-00135                 valType const & angle, 
-00136                 detail::tvec3<valType> const & axis);
-00137 
-00140         template <typename valType> 
-00141         valType extractRealComponent(
-00142                 detail::tquat<valType> const & q);
-00143 
-00146         template <typename valType> 
-00147         valType roll(
-00148                 detail::tquat<valType> const & x);
-00149 
-00152     template <typename valType> 
-00153         valType pitch(
-00154                 detail::tquat<valType> const & x);
-00155 
-00158         template <typename valType> 
-00159         valType yaw(
-00160                 detail::tquat<valType> const & x);
-00161                 
-00164         template <typename valType> 
-00165         detail::tvec3<valType> eulerAngles(
-00166                 detail::tquat<valType> const & x);
-00167 
-00170     template <typename valType> 
-00171         detail::tmat3x3<valType> toMat3(
-00172                 detail::tquat<valType> const & x){return gtc::quaternion::mat3_cast(x);}
-00173 
-00176         template <typename valType> 
-00177         detail::tmat4x4<valType> toMat4(
-00178                 detail::tquat<valType> const & x){return gtc::quaternion::mat4_cast(x);}
-00179 
-00182         template <typename valType> 
-00183         detail::tquat<valType> toQuat(
-00184                 detail::tmat3x3<valType> const & x){return gtc::quaternion::quat_cast(x);}
-00185 
-00188         template <typename valType> 
-00189         detail::tquat<valType> toQuat(
-00190                 detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);}
-00191 
-00194         template <typename T>
-00195         detail::tquat<T> shortMix(
-00196                 detail::tquat<T> const & x, 
-00197                 detail::tquat<T> const & y, 
-00198                 T const & a);
-00199 
-00202         template <typename T>
-00203         detail::tquat<T> fastMix(
-00204                 detail::tquat<T> const & x, 
-00205                 detail::tquat<T> const & y, 
-00206                 T const & a);
-00207 
-00209 }//namespace quaternion
-00210 }//namespace gtx
-00211 } //namespace glm
-00212 
-00213 #include "quaternion.inl"
-00214 
-00215 namespace glm{using namespace gtx::quaternion;}
-00216 
-00217 #endif//glm_gtx_quaternion
-
-
- - - diff --git a/doc/api-0.9.2/a00096_source.html b/doc/api-0.9.2/a00096_source.html deleted file mode 100644 index fe2cbb42..00000000 --- a/doc/api-0.9.2/a00096_source.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - -random.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
random.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-01-16
-00005 // Updated : 2007-08-30
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/random.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_vecx
-00012 // - GLM_GTX_half_float
-00014 
-00015 #ifndef glm_gtx_random
-00016 #define glm_gtx_random
-00017 
-00018 // Dependency:
-00019 #include "../glm.hpp"
-00020 #include "../gtc/half_float.hpp"
-00021 
-00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00023 #       pragma message("GLM: GLM_GTX_random extension included")
-00024 #endif
-00025 
-00026 namespace glm{
-00027 namespace gtx{
-00028 namespace random 
-00029 {
-00032 
-00035     template <typename T> T signedRand1();
-00036         
-00037         template <> float signedRand1();                                                                                     
-00038     template <> double signedRand1();                                                                                   
-00039     template <typename T> detail::tvec2<T> signedRand2();                                                                           
-00040     template <typename T> detail::tvec3<T> signedRand3();                                                                           
-00041     template <typename T> detail::tvec4<T> signedRand4();                                                                           
-00042     
-00043         template <typename T> detail::tvec2<T> normalizedRand2();                                                                          
-00044         template <typename T> detail::tvec2<T> normalizedRand2(T Min, T Max);                                                         
-00045         template <typename T> detail::tvec3<T> normalizedRand3();                                                                          
-00046         template <typename T> detail::tvec3<T> normalizedRand3(T Min, T Max);                                                        
-00047 
-00048     template <typename T> T compRand1();                                                                                       
-00049         template <> float compRand1();                                                                                         
-00050     template <> double compRand1();                                                                                      
-00051     template <typename T> T compRand1(T Min, T Max);                                                                     
-00052     template <typename T> detail::tvec2<T> compRand2(T Min, T Max);                                                              
-00053     template <typename T> detail::tvec3<T> compRand3(T Min, T Max);                                                             
-00054     template <typename T> detail::tvec4<T> compRand4(T Min, T Max);                                                              
-00055     template <typename T> detail::tvec2<T> compRand2(const detail::tvec2<T>& Min, const detail::tvec2<T>& Max);                                
-00056     template <typename T> detail::tvec3<T> compRand3(const detail::tvec3<T>& Min, const detail::tvec3<T>& Max);                                
-00057     template <typename T> detail::tvec3<T> compRand4(const detail::tvec4<T>& Min, const detail::tvec4<T>& Max);                                
-00058 
-00059     template <typename T> detail::tvec2<T> vecRand2();                                                                                 
-00060     template <typename T> detail::tvec2<T> vecRand2(T MinRadius, T MaxRadius);                                        
-00061     template <typename T> detail::tvec3<T> vecRand3();                                                                                 
-00062     template <typename T> detail::tvec3<T> vecRand3(T MinRadius, T MaxRadius);                                        
-00063     template <typename T> detail::tvec4<T> vecRand4();                                                                                 
-00064     template <typename T> detail::tvec4<T> vecRand4(T MinRadius, T MaxRadius);                                        
-00065 
-00066     template <typename T> T gaussRand1(T mean, T std_deviation);                                           
-00067     template <typename T> detail::tvec2<T> gaussRand2(T mean, T std_deviation);                                   
-00068     template <typename T> detail::tvec3<T> gaussRand3(T mean, T std_deviation);                                   
-00069     template <typename T> detail::tvec4<T> gaussRand4(T mean, T std_deviation);                                   
-00070     template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, T std_deviation);                    
-00071     template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, T std_deviation);                    
-00072     template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, T std_deviation);                    
-00073     template <typename T> detail::tvec2<T> gaussRand2(T  mean, const detail::tvec2<T>& std_deviation);                   
-00074     template <typename T> detail::tvec3<T> gaussRand3(T  mean, const detail::tvec3<T>& std_deviation);                   
-00075     template <typename T> detail::tvec4<T> gaussRand4(T  mean, const detail::tvec4<T>& std_deviation);                   
-00076     template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, const detail::tvec2<T>& std_deviation);     
-00077     template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, const detail::tvec3<T>& std_deviation);     
-00078     template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, const detail::tvec4<T>& std_deviation);     
-00079 
-00081 }//namespace random
-00082 }//namespace gtx
-00083 }//namespace glm
-00084 
-00085 #include "random.inl"
-00086 
-00087 namespace glm{using namespace gtx::random;}
-00088 
-00089 #endif//glm_gtx_random
-
-
- - - diff --git a/doc/api-0.9.2/a00097_source.html b/doc/api-0.9.2/a00097_source.html deleted file mode 100644 index 6608cb78..00000000 --- a/doc/api-0.9.2/a00097_source.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - -raw_data.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
raw_data.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-11-19
-00005 // Updated : 2010-01-28
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/raw_data.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_raw_data
-00014 #define glm_gtx_raw_data
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include "../gtc/type_precision.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_raw_data extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace raw_data 
-00027 {
-00028         using namespace gtc::type_precision;
-00029 
-00032 
-00035         typedef uint8           byte;
-00036 
-00039         typedef uint16          word;
-00040 
-00043         typedef uint32          dword;
-00044 
-00047         typedef uint64          qword;
-00048 
-00050 }// namespace raw_data
-00051 }// namespace gtx
-00052 }// namespace glm
-00053 
-00054 #include "raw_data.inl"
-00055 
-00056 namespace glm{using namespace gtx::raw_data;}
-00057 
-00058 #endif//glm_gtx_raw_data
-
-
- - - diff --git a/doc/api-0.9.2/a00098_source.html b/doc/api-0.9.2/a00098_source.html deleted file mode 100644 index a332b1ed..00000000 --- a/doc/api-0.9.2/a00098_source.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - -reciprocal.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
reciprocal.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-10-09
-00005 // Updated : 2008-10-09
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/reciprocal.hpp
-00009 
-00010 #ifndef glm_gtx_reciprocal
-00011 #define glm_gtx_reciprocal
-00012 
-00013 // Dependency:
-00014 #include "../glm.hpp"
-00015 
-00016 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00017 #       pragma message("GLM: GLM_GTX_reciprocal extension included")
-00018 #endif
-00019 
-00020 namespace glm{
-00021 namespace gtx{
-00022 namespace reciprocal 
-00023 {
-00026 
-00030         template <typename genType> 
-00031         genType sec(genType const & angle);
-00032 
-00036         template <typename genType> 
-00037         genType csc(genType const & angle);
-00038                 
-00042         template <typename genType> 
-00043         genType cot(genType const & angle);
-00044 
-00047         template <typename genType> 
-00048         genType asec(genType const & x);
-00049 
-00052         template <typename genType> 
-00053         genType acsc(genType const & x);
-00054                 
-00057         template <typename genType> 
-00058         genType acot(genType const & x);
-00059 
-00062         template <typename genType> 
-00063         genType sech(genType const & angle);
-00064 
-00067         template <typename genType> 
-00068         genType csch(genType const & angle);
-00069                 
-00072         template <typename genType> 
-00073         genType coth(genType const & angle);
-00074 
-00077         template <typename genType> 
-00078         genType asech(genType const & x);
-00079 
-00082         template <typename genType> 
-00083         genType acsch(genType const & x);
-00084                 
-00087         template <typename genType> 
-00088         genType acoth(genType const & x);
-00089 
-00091 }//namespace reciprocal
-00092 }//namespace gtx
-00093 }//namespace glm
-00094 
-00095 #include "reciprocal.inl"
-00096 
-00097 namespace glm{using namespace gtx::reciprocal;}
-00098 
-00099 #endif//glm_gtx_reciprocal
-
-
- - - diff --git a/doc/api-0.9.2/a00099_source.html b/doc/api-0.9.2/a00099_source.html deleted file mode 100644 index 5d4e4620..00000000 --- a/doc/api-0.9.2/a00099_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -rotate_vector.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
rotate_vector.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-11-02
-00005 // Updated : 2009-02-19
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/rotate_vector.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_rotate_vector
-00014 #define glm_gtx_rotate_vector
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include "../gtx/transform.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_rotate_vector extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace rotate_vector 
-00027 {
-00028         using namespace transform;
-00029 
-00032 
-00035         template <typename T> 
-00036         detail::tvec2<T> rotate(
-00037         detail::tvec2<T> const & v, 
-00038                 T const & angle);
-00039                 
-00042         template <typename T> 
-00043         detail::tvec3<T> rotate(
-00044         detail::tvec3<T> const & v, 
-00045                 T const & angle, 
-00046         detail::tvec3<T> const & normal);
-00047                 
-00050         template <typename T> 
-00051         detail::tvec4<T> rotate(
-00052         detail::tvec4<T> const & v, 
-00053         T const & angle, 
-00054                 detail::tvec3<T> const & normal);
-00055                 
-00058         template <typename T> 
-00059         detail::tvec3<T> rotateX(
-00060         detail::tvec3<T> const & v, 
-00061                 T const & angle);
-00062 
-00065         template <typename T> 
-00066         detail::tvec3<T> rotateY(
-00067                 detail::tvec3<T> const & v, 
-00068                 T const & angle);
-00069                 
-00072         template <typename T> 
-00073         detail::tvec3<T> rotateZ(
-00074         detail::tvec3<T> const & v, 
-00075                 T const & angle);
-00076                 
-00079         template <typename T> 
-00080         detail::tvec4<T> rotateX(
-00081         detail::tvec4<T> const & v, 
-00082                 T const & angle);
-00083                 
-00086         template <typename T> 
-00087         detail::tvec4<T> rotateY(
-00088         detail::tvec4<T> const & v, 
-00089                 T const & angle);
-00090                 
-00093         template <typename T> 
-00094         detail::tvec4<T> rotateZ(
-00095         detail::tvec4<T> const & v, 
-00096                 T const & angle);
-00097                 
-00100         template <typename T> 
-00101         detail::tmat4x4<T> orientation(
-00102         detail::tvec3<T> const & Normal, 
-00103         detail::tvec3<T> const & Up);
-00104 
-00106 }//namespace rotate_vector
-00107 }//namespace gtx
-00108 }//namespace glm
-00109 
-00110 #include "rotate_vector.inl"
-00111 
-00112 namespace glm{using namespace gtx::rotate_vector;}
-00113 
-00114 #endif//glm_gtx_rotate_vector
-
-
- - - diff --git a/doc/api-0.9.2/a00101_source.html b/doc/api-0.9.2/a00101_source.html deleted file mode 100644 index f79aa581..00000000 --- a/doc/api-0.9.2/a00101_source.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - -simd_mat4.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
simd_mat4.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-07
-00005 // Updated : 2009-05-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/simd_vec4.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - intrinsic
-00013 
-00014 #ifndef glm_gtx_simd_mat4
-00015 #define glm_gtx_simd_mat4
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 
-00020 #if(GLM_ARCH & GLM_ARCH_SSE2)
-00021 #       include "../core/intrinsic_matrix.hpp"
-00022 #       include "../gtx/simd_vec4.hpp"
-00023 #else
-00024 #       error "GLM: GLM_GTX_simd_mat4 requires compiler support of SSE2 through intrinsics"
-00025 #endif
-00026 
-00027 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00028 #       pragma message("GLM: GLM_GTX_simd_mat4 extension included")
-00029 #endif
-00030 
-00031 namespace glm{
-00032 namespace detail
-00033 {
-00036         GLM_ALIGNED_STRUCT(16) fmat4x4SIMD
-00037         {
-00038                 enum ctor{null};
-00039 
-00040                 typedef float value_type;
-00041                 typedef fvec4SIMD col_type;
-00042                 typedef fvec4SIMD row_type;
-00043                 typedef std::size_t size_type;
-00044                 static size_type value_size();
-00045                 static size_type col_size();
-00046                 static size_type row_size();
-00047                 static bool is_matrix();
-00048 
-00049                 fvec4SIMD Data[4];
-00050 
-00052                 // Constructors
-00053 
-00054                 fmat4x4SIMD();
-00055                 explicit fmat4x4SIMD(float const & s);
-00056                 explicit fmat4x4SIMD(
-00057                         float const & x0, float const & y0, float const & z0, float const & w0,
-00058                         float const & x1, float const & y1, float const & z1, float const & w1,
-00059                         float const & x2, float const & y2, float const & z2, float const & w2,
-00060                         float const & x3, float const & y3, float const & z3, float const & w3);
-00061                 explicit fmat4x4SIMD(
-00062                         fvec4SIMD const & v0,
-00063                         fvec4SIMD const & v1,
-00064                         fvec4SIMD const & v2,
-00065                         fvec4SIMD const & v3);
-00066                 explicit fmat4x4SIMD(
-00067                         tmat4x4<float> const & m);
-00068 
-00069                 // Conversions
-00070                 //template <typename U> 
-00071                 //explicit tmat4x4(tmat4x4<U> const & m);
-00072 
-00073                 //explicit tmat4x4(tmat2x2<T> const & x);
-00074                 //explicit tmat4x4(tmat3x3<T> const & x);
-00075                 //explicit tmat4x4(tmat2x3<T> const & x);
-00076                 //explicit tmat4x4(tmat3x2<T> const & x);
-00077                 //explicit tmat4x4(tmat2x4<T> const & x);
-00078                 //explicit tmat4x4(tmat4x2<T> const & x);
-00079                 //explicit tmat4x4(tmat3x4<T> const & x);
-00080                 //explicit tmat4x4(tmat4x3<T> const & x);
-00081 
-00082                 // Accesses
-00083                 fvec4SIMD & operator[](size_type i);
-00084                 fvec4SIMD const & operator[](size_type i) const;
-00085 
-00086                 // Unary updatable operators
-00087                 fmat4x4SIMD & operator= (fmat4x4SIMD const & m);
-00088                 fmat4x4SIMD & operator+= (float const & s);
-00089                 fmat4x4SIMD & operator+= (fmat4x4SIMD const & m);
-00090                 fmat4x4SIMD & operator-= (float const & s);
-00091                 fmat4x4SIMD & operator-= (fmat4x4SIMD const & m);
-00092                 fmat4x4SIMD & operator*= (float const & s);
-00093                 fmat4x4SIMD & operator*= (fmat4x4SIMD const & m);
-00094                 fmat4x4SIMD & operator/= (float const & s);
-00095                 fmat4x4SIMD & operator/= (fmat4x4SIMD const & m);
-00096                 fmat4x4SIMD & operator++ ();
-00097                 fmat4x4SIMD & operator-- ();
-00098         };
-00099 
-00100         // Binary operators
-00101         fmat4x4SIMD operator+ (fmat4x4SIMD const & m, float const & s);
-00102         fmat4x4SIMD operator+ (float const & s, fmat4x4SIMD const & m);
-00103         fmat4x4SIMD operator+ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
-00104             
-00105         fmat4x4SIMD operator- (fmat4x4SIMD const & m, float const & s);
-00106         fmat4x4SIMD operator- (float const & s, fmat4x4SIMD const & m);
-00107         fmat4x4SIMD operator- (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
-00108 
-00109         fmat4x4SIMD operator* (fmat4x4SIMD const & m, float const & s);
-00110         fmat4x4SIMD operator* (float const & s, fmat4x4SIMD const & m);
-00111 
-00112         fvec4SIMD operator* (fmat4x4SIMD const & m, fvec4SIMD const & v);
-00113         fvec4SIMD operator* (fvec4SIMD const & v, fmat4x4SIMD const & m);
-00114 
-00115         fmat4x4SIMD operator* (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
-00116 
-00117         fmat4x4SIMD operator/ (fmat4x4SIMD const & m, float const & s);
-00118         fmat4x4SIMD operator/ (float const & s, fmat4x4SIMD const & m);
-00119 
-00120         fvec4SIMD operator/ (fmat4x4SIMD const & m, fvec4SIMD const & v);
-00121         fvec4SIMD operator/ (fvec4SIMD const & v, fmat4x4SIMD const & m);
-00122 
-00123         fmat4x4SIMD operator/ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
-00124 
-00125         // Unary constant operators
-00126         fmat4x4SIMD const operator-  (fmat4x4SIMD const & m);
-00127         fmat4x4SIMD const operator-- (fmat4x4SIMD const & m, int);
-00128         fmat4x4SIMD const operator++ (fmat4x4SIMD const & m, int);
-00129 }//namespace detail
-00130 
-00131 namespace gtx{
-00132 namespace simd_mat4 
-00133 {
-00134         typedef detail::fmat4x4SIMD simdMat4;
-00135 
-00138 
-00141         detail::tmat4x4<float> mat4_cast(
-00142                 detail::fmat4x4SIMD const & x);
-00143 
-00147         detail::fmat4x4SIMD matrixCompMult(
-00148                 detail::fmat4x4SIMD const & x,
-00149                 detail::fmat4x4SIMD const & y);
-00150 
-00155         detail::fmat4x4SIMD outerProduct(
-00156                 detail::fvec4SIMD const & c,
-00157                 detail::fvec4SIMD const & r);
-00158 
-00161         detail::fmat4x4SIMD transpose(
-00162                 detail::fmat4x4SIMD const & x);
-00163 
-00166         float determinant(
-00167                 detail::fmat4x4SIMD const & m);
-00168 
-00171         detail::fmat4x4SIMD inverse(
-00172                 detail::fmat4x4SIMD const & m);
-00173 
-00175 }// namespace simd_mat4
-00176 }// namespace gtx
-00177 }// namespace glm
-00178 
-00179 #include "simd_mat4.inl"
-00180 
-00181 namespace glm{using namespace gtx::simd_mat4;}
-00182 
-00183 #endif//glm_gtx_simd_mat4
-
-
- - - diff --git a/doc/api-0.9.2/a00102_source.html b/doc/api-0.9.2/a00102_source.html deleted file mode 100644 index c6a29600..00000000 --- a/doc/api-0.9.2/a00102_source.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - -simd_vec4.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
simd_vec4.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-07
-00005 // Updated : 2009-05-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/simd_vec4.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - intrinsic
-00013 
-00014 #ifndef glm_gtx_simd_vec4
-00015 #define glm_gtx_simd_vec4
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 
-00020 #if(GLM_ARCH & GLM_ARCH_SSE2)
-00021 #       include "../core/intrinsic_common.hpp"
-00022 #       include "../core/intrinsic_geometric.hpp"
-00023 #else
-00024 #       error "GLM: GLM_GTX_simd_vec4 requires compiler support of SSE2 through intrinsics"
-00025 #endif
-00026 
-00027 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00028 #       pragma message("GLM: GLM_GTX_simd_vec4 extension included")
-00029 #endif
-00030 
-00031 namespace glm{
-00032 namespace detail
-00033 {
-00036         GLM_ALIGNED_STRUCT(16) fvec4SIMD
-00037         {
-00038                 enum ctor{null};
-00039                 typedef __m128 value_type;
-00040                 typedef std::size_t size_type;
-00041                 static size_type value_size();
-00042 
-00043                 typedef fvec4SIMD type;
-00044                 typedef tvec4<bool> bool_type;
-00045 
-00046                 __m128 Data;
-00047 
-00049                 // Implicit basic constructors
-00050 
-00051                 fvec4SIMD();
-00052                 fvec4SIMD(__m128 const & Data);
-00053                 fvec4SIMD(fvec4SIMD const & v);
-00054 
-00056                 // Explicit basic constructors
-00057 
-00058                 explicit fvec4SIMD(
-00059                         ctor);
-00060                 explicit fvec4SIMD(
-00061                         float const & s);
-00062                 explicit fvec4SIMD(
-00063                         float const & x, 
-00064                         float const & y, 
-00065                         float const & z, 
-00066                         float const & w);
-00067                 explicit fvec4SIMD(
-00068                         tvec4<float> const & v);
-00069 
-00072 
-00073                 fvec4SIMD(vec2 const & v, float const & s1, float const & s2);
-00074                 fvec4SIMD(float const & s1, vec2 const & v, float const & s2);
-00075                 fvec4SIMD(float const & s1, float const & s2, vec2 const & v);
-00076                 fvec4SIMD(vec3 const & v, float const & s);
-00077                 fvec4SIMD(float const & s, vec3 const & v);
-00078                 fvec4SIMD(vec2 const & v1, vec2 const & v2);
-00079                 //fvec4SIMD(ivec4SIMD const & v);
-00080 
-00082                 // Unary arithmetic operators
-00083 
-00084                 fvec4SIMD& operator= (fvec4SIMD const & v);
-00085                 fvec4SIMD& operator+=(fvec4SIMD const & v);
-00086                 fvec4SIMD& operator-=(fvec4SIMD const & v);
-00087                 fvec4SIMD& operator*=(fvec4SIMD const & v);
-00088                 fvec4SIMD& operator/=(fvec4SIMD const & v);
-00089 
-00090                 fvec4SIMD& operator+=(float const & s);
-00091                 fvec4SIMD& operator-=(float const & s);
-00092                 fvec4SIMD& operator*=(float const & s);
-00093                 fvec4SIMD& operator/=(float const & s);
-00094 
-00095                 fvec4SIMD& operator++();
-00096                 fvec4SIMD& operator--();
-00097 
-00099                 // Swizzle operators
-00100 
-00101                 template <comp X, comp Y, comp Z, comp W>
-00102                 fvec4SIMD& swizzle();
-00103                 template <comp X, comp Y, comp Z, comp W>
-00104                 fvec4SIMD swizzle() const;
-00105                 template <comp X, comp Y, comp Z>
-00106                 fvec4SIMD swizzle() const;
-00107                 template <comp X, comp Y>
-00108                 fvec4SIMD swizzle() const;
-00109                 template <comp X>
-00110                 fvec4SIMD swizzle() const;
-00111         };
-00112 }//namespace detail
-00113 
-00114 namespace gtx{
-00115 namespace simd_vec4 
-00116 {
-00117         typedef glm::detail::fvec4SIMD simdVec4;
-00118 
-00121 
-00124         detail::tvec4<float> vec4_cast(
-00125                 detail::fvec4SIMD const & x);
-00126 
-00129         detail::fvec4SIMD abs(detail::fvec4SIMD const & x);
-00130 
-00133         detail::fvec4SIMD sign(detail::fvec4SIMD const & x);
-00134 
-00137         detail::fvec4SIMD floor(detail::fvec4SIMD const & x);
-00138 
-00142         detail::fvec4SIMD trunc(detail::fvec4SIMD const & x);
-00143 
-00150         detail::fvec4SIMD round(detail::fvec4SIMD const & x);
-00151 
-00156         //detail::fvec4SIMD roundEven(detail::fvec4SIMD const & x);
-00157 
-00161         detail::fvec4SIMD ceil(detail::fvec4SIMD const & x);
-00162 
-00165         detail::fvec4SIMD fract(detail::fvec4SIMD const & x);
-00166 
-00170         detail::fvec4SIMD mod(
-00171                 detail::fvec4SIMD const & x, 
-00172                 detail::fvec4SIMD const & y);
-00173 
-00177         detail::fvec4SIMD mod(
-00178                 detail::fvec4SIMD const & x, 
-00179                 float const & y);
-00180 
-00186         //detail::fvec4SIMD modf(
-00187         //      detail::fvec4SIMD const & x, 
-00188         //      detail::fvec4SIMD & i);
-00189 
-00192         detail::fvec4SIMD min(
-00193                 detail::fvec4SIMD const & x, 
-00194                 detail::fvec4SIMD const & y);
-00195 
-00196         detail::fvec4SIMD min(
-00197                 detail::fvec4SIMD const & x, 
-00198                 float const & y);
-00199 
-00202         detail::fvec4SIMD max(
-00203                 detail::fvec4SIMD const & x, 
-00204                 detail::fvec4SIMD const & y);
-00205 
-00206         detail::fvec4SIMD max(
-00207                 detail::fvec4SIMD const & x, 
-00208                 float const & y);
-00209 
-00213         detail::fvec4SIMD clamp(
-00214                 detail::fvec4SIMD const & x, 
-00215                 detail::fvec4SIMD const & minVal, 
-00216                 detail::fvec4SIMD const & maxVal); 
-00217 
-00218         detail::fvec4SIMD clamp(
-00219                 detail::fvec4SIMD const & x, 
-00220                 float const & minVal, 
-00221                 float const & maxVal); 
-00222 
-00246         // \todo Test when 'a' is a boolean.
-00248         detail::fvec4SIMD mix(
-00249                 detail::fvec4SIMD const & x, 
-00250                 detail::fvec4SIMD const & y, 
-00251                 detail::fvec4SIMD const & a);
-00252 
-00255         detail::fvec4SIMD step(
-00256                 detail::fvec4SIMD const & edge, 
-00257                 detail::fvec4SIMD const & x);
-00258 
-00259         detail::fvec4SIMD step(
-00260                 float const & edge, 
-00261                 detail::fvec4SIMD const & x);
-00262 
-00273         detail::fvec4SIMD smoothstep(
-00274                 detail::fvec4SIMD const & edge0, 
-00275                 detail::fvec4SIMD const & edge1, 
-00276                 detail::fvec4SIMD const & x);
-00277 
-00278         detail::fvec4SIMD smoothstep(
-00279                 float const & edge0, 
-00280                 float const & edge1, 
-00281                 detail::fvec4SIMD const & x);
-00282 
-00289         //bvec4 isnan(detail::fvec4SIMD const & x);
-00290 
-00297         //bvec4 isinf(detail::fvec4SIMD const & x);
-00298 
-00303         //detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const & value);
-00304 
-00311         //detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const & value);
-00312 
-00315         detail::fvec4SIMD fma(
-00316                 detail::fvec4SIMD const & a, 
-00317                 detail::fvec4SIMD const & b, 
-00318                 detail::fvec4SIMD const & c);
-00319 
-00329         //detail::fvec4SIMD frexp(detail::fvec4SIMD const & x, detail::ivec4SIMD & exp);
-00330 
-00337         //detail::fvec4SIMD ldexp(detail::fvec4SIMD const & x, detail::ivec4SIMD const & exp);
-00338 
-00341         float length(
-00342                 detail::fvec4SIMD const & x);
-00343 
-00347         float fastLength(
-00348                 detail::fvec4SIMD const & x);
-00349 
-00353         float niceLength(
-00354                 detail::fvec4SIMD const & x);
-00355 
-00358         detail::fvec4SIMD length4(
-00359                 detail::fvec4SIMD const & x);
-00360 
-00364         detail::fvec4SIMD fastLength4(
-00365                 detail::fvec4SIMD const & x);
-00366 
-00370         detail::fvec4SIMD niceLength4(
-00371                 detail::fvec4SIMD const & x);
-00372 
-00375         float distance(
-00376                 detail::fvec4SIMD const & p0,
-00377                 detail::fvec4SIMD const & p1);
-00378 
-00381         detail::fvec4SIMD distance4(
-00382                 detail::fvec4SIMD const & p0,
-00383                 detail::fvec4SIMD const & p1);
-00384 
-00387         float simdDot(
-00388                 detail::fvec4SIMD const & x,
-00389                 detail::fvec4SIMD const & y);
-00390 
-00393         detail::fvec4SIMD dot4(
-00394                 detail::fvec4SIMD const & x,
-00395                 detail::fvec4SIMD const & y);
-00396 
-00399         detail::fvec4SIMD cross(
-00400                 detail::fvec4SIMD const & x,
-00401                 detail::fvec4SIMD const & y);
-00402 
-00405         detail::fvec4SIMD normalize(
-00406                 detail::fvec4SIMD const & x);
-00407 
-00411         detail::fvec4SIMD fastNormalize(
-00412                 detail::fvec4SIMD const & x);
-00413 
-00416         detail::fvec4SIMD simdFaceforward(
-00417                 detail::fvec4SIMD const & N,
-00418                 detail::fvec4SIMD const & I,
-00419                 detail::fvec4SIMD const & Nref);
-00420 
-00424         detail::fvec4SIMD reflect(
-00425                 detail::fvec4SIMD const & I,
-00426                 detail::fvec4SIMD const & N);
-00427 
-00432         detail::fvec4SIMD refract(
-00433                 detail::fvec4SIMD const & I,
-00434                 detail::fvec4SIMD const & N,
-00435                 float const & eta);
-00436 
-00439         detail::fvec4SIMD sqrt(
-00440                 detail::fvec4SIMD const & x);
-00441 
-00445         detail::fvec4SIMD niceSqrt(
-00446                 detail::fvec4SIMD const & x);
-00447 
-00451         detail::fvec4SIMD fastSqrt(
-00452                 detail::fvec4SIMD const & x);
-00453 
-00456         detail::fvec4SIMD inversesqrt(
-00457                 detail::fvec4SIMD const & x);
-00458 
-00462         detail::fvec4SIMD fastInversesqrt(
-00463                 detail::fvec4SIMD const & x);
-00464 
-00466 }//namespace simd_vec4
-00467 }//namespace gtx
-00468 }//namespace glm
-00469 
-00470 #include "simd_vec4.inl"
-00471 
-00472 namespace glm{using namespace gtx::simd_vec4;}
-00473 
-00474 #endif//glm_gtx_simd_vec4
-
-
- - - diff --git a/doc/api-0.9.2/a00103_source.html b/doc/api-0.9.2/a00103_source.html deleted file mode 100644 index a00bd1bf..00000000 --- a/doc/api-0.9.2/a00103_source.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -simplex.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
simplex.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2011-04-09
-00005 // Updated : 2011-04-09
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/simplex.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_simplex
-00014 #define glm_gtx_simplex
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_simplex extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace spline 
-00026 {
-00029             
-00032     template <typename genType> 
-00033     genType catmullRom(
-00034                         genType const & v1, 
-00035                         genType const & v2, 
-00036                         genType const & v3, 
-00037                         genType const & v4, 
-00038                         typename genType::value_type const & s);
-00039             
-00042     template <typename genType> 
-00043     genType hermite(
-00044                     genType const & v1, 
-00045                     genType const & t1, 
-00046                     genType const & v2, 
-00047                     genType const & t2, 
-00048                     typename genType::value_type const & s);
-00049             
-00052     template <typename genType> 
-00053     genType cubic(
-00054                     genType const & v1, 
-00055                     genType const & v2, 
-00056                     genType const & v3, 
-00057                     genType const & v4, 
-00058                     typename genType::value_type const & s);
-00059             
-00061 }// namespace simplex
-00062 }// namespace gtx
-00063 }// namespace glm
-00064 
-00065 #include "simplex.inl"
-00066 
-00067 namespace glm{using namespace gtx::simplex;}
-00068 
-00069 #endif//glm_gtx_spline
-00070 
-
-
- - - diff --git a/doc/api-0.9.2/a00104_source.html b/doc/api-0.9.2/a00104_source.html deleted file mode 100644 index 48e65312..00000000 --- a/doc/api-0.9.2/a00104_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - -spline.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
spline.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-01-25
-00005 // Updated : 2009-02-19
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/spline.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_spline
-00014 #define glm_gtx_spline
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include "../gtx/optimum_pow.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_spline extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace spline 
-00027 {
-00028         using namespace gtx::optimum_pow;
-00029 
-00032 
-00035         template <typename genType> 
-00036         genType catmullRom(
-00037                 genType const & v1, 
-00038                 genType const & v2, 
-00039                 genType const & v3, 
-00040                 genType const & v4, 
-00041                 typename genType::value_type const & s);
-00042                 
-00045     template <typename genType> 
-00046         genType hermite(
-00047                 genType const & v1, 
-00048                 genType const & t1, 
-00049                 genType const & v2, 
-00050                 genType const & t2, 
-00051                 typename genType::value_type const & s);
-00052                 
-00055         template <typename genType> 
-00056         genType cubic(
-00057                 genType const & v1, 
-00058                 genType const & v2, 
-00059                 genType const & v3, 
-00060                 genType const & v4, 
-00061                 typename genType::value_type const & s);
-00062 
-00064 }//namespace spline
-00065 }//namespace gtx
-00066 }//namespace glm
-00067 
-00068 #include "spline.inl"
-00069 
-00070 namespace glm{using namespace gtx::spline;}
-00071 
-00072 #endif//glm_gtx_spline
-00073 
-
-
- - - diff --git a/doc/api-0.9.2/a00105_source.html b/doc/api-0.9.2/a00105_source.html deleted file mode 100644 index 80d02960..00000000 --- a/doc/api-0.9.2/a00105_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - -std_based_type.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
std_based_type.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-06-08
-00005 // Updated : 2008-06-08
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/std_based_type.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_std_based_type
-00014 #define glm_gtx_std_based_type
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include <cstdlib>
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_std_based_type extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace std_based_type 
-00027 {
-00028         typedef detail::tvec2<std::size_t>              size2;
-00029         typedef detail::tvec3<std::size_t>              size3;
-00030         typedef detail::tvec4<std::size_t>              size4;
-00031 
-00032         typedef detail::tvec2<signed char>              scvec2;
-00033         typedef detail::tvec3<signed char>              scvec3;
-00034         typedef detail::tvec4<signed char>              scvec4;
-00035 
-00036         typedef detail::tvec2<unsigned char>    ucvec2;
-00037         typedef detail::tvec3<unsigned char>    ucvec3;
-00038         typedef detail::tvec4<unsigned char>    ucvec4;
-00039 
-00040         typedef detail::tvec2<signed short>             ssvec2;
-00041         typedef detail::tvec3<signed short>             ssvec3;
-00042         typedef detail::tvec4<signed short>             ssvec4;
-00043 
-00044         typedef detail::tvec2<unsigned short>   usvec2;
-00045         typedef detail::tvec3<unsigned short>   usvec3;
-00046         typedef detail::tvec4<unsigned short>   usvec4;
-00047 
-00048         typedef detail::tvec2<signed int>               sivec2;
-00049         typedef detail::tvec3<signed int>               sivec3;
-00050         typedef detail::tvec4<signed int>               sivec4;
-00051 
-00052         typedef detail::tvec2<unsigned int>             uivec2;
-00053         typedef detail::tvec3<unsigned int>             uivec3;
-00054         typedef detail::tvec4<unsigned int>             uivec4;
-00055 
-00056         typedef detail::tvec2<signed long>              slvec2;
-00057         typedef detail::tvec3<signed long>              slvec3;
-00058         typedef detail::tvec4<signed long>              slvec4;
-00059 
-00060         typedef detail::tvec2<unsigned long>    ulvec2;
-00061         typedef detail::tvec3<unsigned long>    ulvec3;
-00062         typedef detail::tvec4<unsigned long>    ulvec4;
-00063 
-00064 }//namespace std_based_type
-00065 }//namespace gtx
-00066 }//namespace glm
-00067 
-00068 #include "std_based_type.inl"
-00069 
-00070 namespace glm{using namespace gtx::std_based_type;}
-00071 
-00072 #endif//glm_gtx_std_based_type
-
-
- - - diff --git a/doc/api-0.9.2/a00106_source.html b/doc/api-0.9.2/a00106_source.html deleted file mode 100644 index 519c697e..00000000 --- a/doc/api-0.9.2/a00106_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -string_cast.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
string_cast.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-04-26
-00005 // Updated : 2010-01-28
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/string_cast.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half_float
-00012 // - GLM_GTX_integer
-00013 // - GLM_GTX_quaternion
-00015 
-00016 #ifndef glm_gtx_string_cast
-00017 #define glm_gtx_string_cast
-00018 
-00019 // Dependency:
-00020 #include "../glm.hpp"
-00021 #include "../gtc/half_float.hpp"
-00022 #include "../gtx/integer.hpp"
-00023 #include "../gtx/unsigned_int.hpp"
-00024 #include "../gtx/quaternion.hpp"
-00025 #include <string>
-00026 
-00027 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00028 #       pragma message("GLM: GLM_GTX_string_cast extension included")
-00029 #endif
-00030 
-00031 namespace glm{
-00032 namespace gtx{
-00033 namespace string_cast 
-00034 {
-00035         using namespace gtc::half_float; 
-00036         using namespace gtx::integer; 
-00037         using namespace gtx::unsigned_int; 
-00038         using namespace gtx::quaternion; 
-00039 
-00042 
-00045         template <typename genType> 
-00046         std::string to_string(genType const & x);
-00047 
-00049 }//namespace string_cast
-00050 }//namespace gtx
-00051 }//namespace glm
-00052 
-00053 #include "string_cast.inl"
-00054 
-00055 namespace glm{using namespace gtx::string_cast;}
-00056 
-00057 #endif//glm_gtx_string_cast
-
-
- - - diff --git a/doc/api-0.9.2/a00107_source.html b/doc/api-0.9.2/a00107_source.html deleted file mode 100644 index a17c68a3..00000000 --- a/doc/api-0.9.2/a00107_source.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - -swizzle.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
swizzle.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2010-02-20
-00005 // Updated : 2010-02-20
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/swizzle.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtc_swizzle
-00014 #define glm_gtc_swizzle
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include "../gtc/type_precision.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTC_swizzle extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtc{
-00026 namespace swizzle 
-00027 {
-00028         using namespace gtc::half_float;
-00029 
-00030         template <typename T, template <typename> class vecType>
-00031         T const & swizzle(      
-00032                 vecType<T> const & v,
-00033                 comp x);
-00034 
-00035         template <typename T, template <typename> class vecType>
-00036         detail::tvec2<T> const & swizzle(
-00037                 vecType<T> const & v,
-00038                 comp x, comp y);
-00039 
-00040         template <typename T, template <typename> class vecType>
-00041         detail::tvec3<T> const & swizzle(
-00042                 vecType<T> const & v,
-00043                 comp x, comp y, comp z);
-00044 
-00045         template <typename T, template <typename> class vecType>
-00046         detail::tvec4<T> const & swizzle(
-00047                 vecType<T> const & v,
-00048                 comp x, comp y, comp z, comp w);
-00049 
-00050         template <typename T, template <typename> class vecType>
-00051         T & swizzle(
-00052                 vecType<T> & v,
-00053                 comp x);
-00054 
-00055         template <typename T, template <typename> class vecType>
-00056         detail::tref2<T> swizzle(
-00057                 vecType<T> & v,
-00058                 comp x, comp y);
-00059 
-00060         template <typename T, template <typename> class vecType>
-00061         detail::tref3<T> swizzle(
-00062                 vecType<T> & v,
-00063                 comp x, comp y, comp z);
-00064 
-00065         template <typename T, template <typename> class vecType>
-00066         detail::tref4<T> swizzle(
-00067                 vecType<T> & v,
-00068                 comp x, comp y, comp z, comp w);
-00069 
-00070 #       define static_swizzle1_const(TYPE, SIZE)                                                        \
-00071                 template <comp x>                                                                               \
-00072                 GLM_FUNC_QUALIFIER TYPE swizzle(detail::tvec##SIZE<TYPE> const & v)     \
-00073                 {return v[x];}                                                                                  
-00074                                                                                                                                 
-00075 #       define static_swizzle1_ref(TYPE, SIZE)                                                                  \
-00076                 template <comp x>                                                                                                       \
-00077                 GLM_FUNC_QUALIFIER TYPE& swizzle(detail::tvec##SIZE<TYPE> & v)          \
-00078                 {return v[x];}
-00079 
-00080         static_swizzle1_ref(detail::float16, 2)
-00081         static_swizzle1_ref(detail::float16, 3)
-00082         static_swizzle1_ref(detail::float16, 4)
-00083         static_swizzle1_ref(detail::float32, 2)
-00084         static_swizzle1_ref(detail::float32, 3)
-00085         static_swizzle1_ref(detail::float32, 4)
-00086         static_swizzle1_ref(detail::float64, 2)
-00087         static_swizzle1_ref(detail::float64, 3)
-00088         static_swizzle1_ref(detail::float64, 4)
-00089 
-00090         static_swizzle1_ref(detail::int8,  2)
-00091         static_swizzle1_ref(detail::int8,  3)
-00092         static_swizzle1_ref(detail::int8,  4)
-00093         static_swizzle1_ref(detail::int16, 2)
-00094         static_swizzle1_ref(detail::int16, 3)
-00095         static_swizzle1_ref(detail::int16, 4)
-00096         static_swizzle1_ref(detail::int32, 2)
-00097         static_swizzle1_ref(detail::int32, 3)
-00098         static_swizzle1_ref(detail::int32, 4)
-00099         static_swizzle1_ref(detail::int64, 2)
-00100         static_swizzle1_ref(detail::int64, 3)
-00101         static_swizzle1_ref(detail::int64, 4)
-00102 
-00103         static_swizzle1_ref(detail::uint8,  2)
-00104         static_swizzle1_ref(detail::uint8,  3)
-00105         static_swizzle1_ref(detail::uint8,  4)
-00106         static_swizzle1_ref(detail::uint16, 2)
-00107         static_swizzle1_ref(detail::uint16, 3)
-00108         static_swizzle1_ref(detail::uint16, 4)
-00109         static_swizzle1_ref(detail::uint32, 2)
-00110         static_swizzle1_ref(detail::uint32, 3)
-00111         static_swizzle1_ref(detail::uint32, 4)
-00112         static_swizzle1_ref(detail::uint64, 2)
-00113         static_swizzle1_ref(detail::uint64, 3)
-00114         static_swizzle1_ref(detail::uint64, 4)
-00115 /*
-00116 #       define static_swizzle2_const(TYPE) \
-00117                 template <comp x, comp y> \
-00118                 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
-00119                 {return TYPE(v[x], v[y]);}
-00120 
-00121 #       define static_swizzle3_const(TYPE) \
-00122                 template <comp x, comp y, comp z> \
-00123                 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
-00124                 {return TYPE(v[x], v[y], v[z]);}
-00125 
-00126 #       define static_swizzle4_const(TYPE) \
-00127                 template <comp x, comp y, comp z, comp w> \
-00128                 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
-00129                 {return TYPE(v[x], v[y], v[z], v[w]);}
-00130 */
-00131 
-00132 #       define static_swizzle2_const(TYPE, SIZE)                                                                        \
-00133                 template <comp x, comp y>                                                                                               \
-00134                 GLM_FUNC_QUALIFIER detail::tvec2<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v)      \
-00135                 {return detail::tvec2<TYPE>(v[x], v[y]);}
-00136 
-00137 #       define static_swizzle3_const(TYPE, SIZE)                                                                        \
-00138                 template <comp x, comp y, comp z>                                                                               \
-00139                 GLM_FUNC_QUALIFIER detail::tvec3<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v)      \
-00140                 {return detail::tvec3<TYPE>(v[x], v[y], v[z]);}
-00141 
-00142 #       define static_swizzle4_const(TYPE, SIZE)                                                                        \
-00143                 template <comp x, comp y, comp z, comp w>                                                               \
-00144                 GLM_FUNC_QUALIFIER detail::tvec4<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v)      \
-00145                 {return detail::tvec4<TYPE>(v[x], v[y], v[z], v[w]);}
-00146 
-00147 
-00148         static_swizzle2_const(glm::f16, 2)
-00149         static_swizzle2_const(glm::f16, 3)
-00150         static_swizzle2_const(glm::f16, 4)
-00151         static_swizzle2_const(glm::f32, 2)
-00152         static_swizzle2_const(glm::f32, 3)
-00153         static_swizzle2_const(glm::f32, 4)
-00154         static_swizzle2_const(glm::f64, 2)
-00155         static_swizzle2_const(glm::f64, 3)
-00156         static_swizzle2_const(glm::f64, 4)
-00157 
-00158         static_swizzle2_const(glm::i8, 2)
-00159         static_swizzle2_const(glm::i8, 3)
-00160         static_swizzle2_const(glm::i8, 4)
-00161         static_swizzle2_const(glm::i16, 2)
-00162         static_swizzle2_const(glm::i16, 3)
-00163         static_swizzle2_const(glm::i16, 4)
-00164         static_swizzle2_const(glm::i32, 2)
-00165         static_swizzle2_const(glm::i32, 3)
-00166         static_swizzle2_const(glm::i32, 4)
-00167         static_swizzle2_const(glm::i64, 2)
-00168         static_swizzle2_const(glm::i64, 3)
-00169         static_swizzle2_const(glm::i64, 4)
-00170 
-00171         static_swizzle2_const(glm::u8, 2)
-00172         static_swizzle2_const(glm::u8, 3)
-00173         static_swizzle2_const(glm::u8, 4)
-00174         static_swizzle2_const(glm::u16, 2)
-00175         static_swizzle2_const(glm::u16, 3)
-00176         static_swizzle2_const(glm::u16, 4)
-00177         static_swizzle2_const(glm::u32, 2)
-00178         static_swizzle2_const(glm::u32, 3)
-00179         static_swizzle2_const(glm::u32, 4)
-00180         static_swizzle2_const(glm::u64, 2)
-00181         static_swizzle2_const(glm::u64, 3)
-00182         static_swizzle2_const(glm::u64, 4)
-00183 
-00184         static_swizzle3_const(glm::f16, 2)
-00185         static_swizzle3_const(glm::f16, 3)
-00186         static_swizzle3_const(glm::f16, 4)
-00187         static_swizzle3_const(glm::f32, 2)
-00188         static_swizzle3_const(glm::f32, 3)
-00189         static_swizzle3_const(glm::f32, 4)
-00190         static_swizzle3_const(glm::f64, 2)
-00191         static_swizzle3_const(glm::f64, 3)
-00192         static_swizzle3_const(glm::f64, 4)
-00193 
-00194         static_swizzle3_const(glm::i8, 2)
-00195         static_swizzle3_const(glm::i8, 3)
-00196         static_swizzle3_const(glm::i8, 4)
-00197         static_swizzle3_const(glm::i16, 2)
-00198         static_swizzle3_const(glm::i16, 3)
-00199         static_swizzle3_const(glm::i16, 4)
-00200         static_swizzle3_const(glm::i32, 2)
-00201         static_swizzle3_const(glm::i32, 3)
-00202         static_swizzle3_const(glm::i32, 4)
-00203         static_swizzle3_const(glm::i64, 2)
-00204         static_swizzle3_const(glm::i64, 3)
-00205         static_swizzle3_const(glm::i64, 4)
-00206 
-00207         static_swizzle3_const(glm::u8, 2)
-00208         static_swizzle3_const(glm::u8, 3)
-00209         static_swizzle3_const(glm::u8, 4)
-00210         static_swizzle3_const(glm::u16, 2)
-00211         static_swizzle3_const(glm::u16, 3)
-00212         static_swizzle3_const(glm::u16, 4)
-00213         static_swizzle3_const(glm::u32, 2)
-00214         static_swizzle3_const(glm::u32, 3)
-00215         static_swizzle3_const(glm::u32, 4)
-00216         static_swizzle3_const(glm::u64, 2)
-00217         static_swizzle3_const(glm::u64, 3)
-00218         static_swizzle3_const(glm::u64, 4)
-00219 
-00220         static_swizzle4_const(glm::f16, 2)
-00221         static_swizzle4_const(glm::f16, 3)
-00222         static_swizzle4_const(glm::f16, 4)
-00223         static_swizzle4_const(glm::f32, 2)
-00224         static_swizzle4_const(glm::f32, 3)
-00225         static_swizzle4_const(glm::f32, 4)
-00226         static_swizzle4_const(glm::f64, 2)
-00227         static_swizzle4_const(glm::f64, 3)
-00228         static_swizzle4_const(glm::f64, 4)
-00229 
-00230         static_swizzle4_const(glm::i8, 2)
-00231         static_swizzle4_const(glm::i8, 3)
-00232         static_swizzle4_const(glm::i8, 4)
-00233         static_swizzle4_const(glm::i16, 2)
-00234         static_swizzle4_const(glm::i16, 3)
-00235         static_swizzle4_const(glm::i16, 4)
-00236         static_swizzle4_const(glm::i32, 2)
-00237         static_swizzle4_const(glm::i32, 3)
-00238         static_swizzle4_const(glm::i32, 4)
-00239         static_swizzle4_const(glm::i64, 2)
-00240         static_swizzle4_const(glm::i64, 3)
-00241         static_swizzle4_const(glm::i64, 4)
-00242 
-00243         static_swizzle4_const(glm::u8, 2)
-00244         static_swizzle4_const(glm::u8, 3)
-00245         static_swizzle4_const(glm::u8, 4)
-00246         static_swizzle4_const(glm::u16, 2)
-00247         static_swizzle4_const(glm::u16, 3)
-00248         static_swizzle4_const(glm::u16, 4)
-00249         static_swizzle4_const(glm::u32, 2)
-00250         static_swizzle4_const(glm::u32, 3)
-00251         static_swizzle4_const(glm::u32, 4)
-00252         static_swizzle4_const(glm::u64, 2)
-00253         static_swizzle4_const(glm::u64, 3)
-00254         static_swizzle4_const(glm::u64, 4)
-00255 
-00256 #       define static_swizzle2_ref(TYPE, SIZE) \
-00257                 template <glm::comp x, glm::comp y> \
-00258                 GLM_FUNC_QUALIFIER glm::detail::tref2<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \
-00259                 {return glm::detail::tref2<TYPE>(v[x], v[y]);}  
-00260 
-00261 #       define static_swizzle3_ref(TYPE, SIZE) \
-00262                 template <glm::comp x, glm::comp y, glm::comp z> \
-00263                 GLM_FUNC_QUALIFIER glm::detail::tref3<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \
-00264                 {return glm::detail::tref3<TYPE>(v[x], v[y], v[z]);}    
-00265 
-00266 #       define static_swizzle4_ref(TYPE, SIZE) \
-00267                 template <glm::comp x, glm::comp y, glm::comp z, glm::comp w> \
-00268                 GLM_FUNC_QUALIFIER glm::detail::tref4<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \
-00269                 {return glm::detail::tref4<TYPE>(v[x], v[y], v[z], v[w]);}      
-00270 
-00271         static_swizzle2_ref(glm::f16, 2)
-00272         static_swizzle2_ref(glm::f16, 3)
-00273         static_swizzle2_ref(glm::f16, 4)
-00274         static_swizzle2_ref(glm::f32, 2)
-00275         static_swizzle2_ref(glm::f32, 3)
-00276         static_swizzle2_ref(glm::f32, 4)
-00277         static_swizzle2_ref(glm::f64, 2)
-00278         static_swizzle2_ref(glm::f64, 3)
-00279         static_swizzle2_ref(glm::f64, 4)
-00280 
-00281         static_swizzle2_ref(glm::i8, 2)
-00282         static_swizzle2_ref(glm::i8, 3)
-00283         static_swizzle2_ref(glm::i8, 4)
-00284         static_swizzle2_ref(glm::i16, 2)
-00285         static_swizzle2_ref(glm::i16, 3)
-00286         static_swizzle2_ref(glm::i16, 4)
-00287         static_swizzle2_ref(glm::i32, 2)
-00288         static_swizzle2_ref(glm::i32, 3)
-00289         static_swizzle2_ref(glm::i32, 4)
-00290         static_swizzle2_ref(glm::i64, 2)
-00291         static_swizzle2_ref(glm::i64, 3)
-00292         static_swizzle2_ref(glm::i64, 4)
-00293 
-00294         static_swizzle2_ref(glm::u8, 2)
-00295         static_swizzle2_ref(glm::u8, 3)
-00296         static_swizzle2_ref(glm::u8, 4)
-00297         static_swizzle2_ref(glm::u16, 2)
-00298         static_swizzle2_ref(glm::u16, 3)
-00299         static_swizzle2_ref(glm::u16, 4)
-00300         static_swizzle2_ref(glm::u32, 2)
-00301         static_swizzle2_ref(glm::u32, 3)
-00302         static_swizzle2_ref(glm::u32, 4)
-00303         static_swizzle2_ref(glm::u64, 2)
-00304         static_swizzle2_ref(glm::u64, 3)
-00305         static_swizzle2_ref(glm::u64, 4)
-00306 
-00307         static_swizzle3_ref(glm::f16, 3)
-00308         static_swizzle3_ref(glm::f16, 4)
-00309         static_swizzle3_ref(glm::f32, 3)
-00310         static_swizzle3_ref(glm::f32, 4)
-00311         static_swizzle3_ref(glm::f64, 3)
-00312         static_swizzle3_ref(glm::f64, 4)
-00313 
-00314         static_swizzle3_ref(glm::i8, 3)
-00315         static_swizzle3_ref(glm::i8, 4)
-00316         static_swizzle3_ref(glm::i16, 3)
-00317         static_swizzle3_ref(glm::i16, 4)
-00318         static_swizzle3_ref(glm::i32, 3)
-00319         static_swizzle3_ref(glm::i32, 4)
-00320         static_swizzle3_ref(glm::i64, 3)
-00321         static_swizzle3_ref(glm::i64, 4)
-00322 
-00323         static_swizzle3_ref(glm::u8, 3)
-00324         static_swizzle3_ref(glm::u8, 4)
-00325         static_swizzle3_ref(glm::u16, 3)
-00326         static_swizzle3_ref(glm::u16, 4)
-00327         static_swizzle3_ref(glm::u32, 3)
-00328         static_swizzle3_ref(glm::u32, 4)
-00329         static_swizzle3_ref(glm::u64, 3)
-00330         static_swizzle3_ref(glm::u64, 4)
-00331 
-00332         static_swizzle4_ref(glm::f16, 4)
-00333         static_swizzle4_ref(glm::f32, 4)
-00334         static_swizzle4_ref(glm::f64, 4)
-00335 
-00336         static_swizzle4_ref(glm::i8, 4)
-00337         static_swizzle4_ref(glm::i16, 4)
-00338         static_swizzle4_ref(glm::i32, 4)
-00339         static_swizzle4_ref(glm::i64, 4)
-00340 
-00341         static_swizzle4_ref(glm::u8, 4)
-00342         static_swizzle4_ref(glm::u16, 4)
-00343         static_swizzle4_ref(glm::u32, 4)
-00344         static_swizzle4_ref(glm::u64, 4)
-00345 
-00346 }//namespace swizzle
-00347 }//namespace gtc
-00348 }//namespace glm
-00349 
-00350 #include "swizzle.inl"
-00351 
-00352 namespace glm{using namespace gtc::swizzle;}
-00353 
-00354 #endif//glm_gtc_swizzle
-
-
- - - diff --git a/doc/api-0.9.2/a00108_source.html b/doc/api-0.9.2/a00108_source.html deleted file mode 100644 index 96dbcdd8..00000000 --- a/doc/api-0.9.2/a00108_source.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - -transform.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
transform.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2009-04-29
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/transform.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_matric_transform
-00013 
-00014 #ifndef glm_gtx_transform
-00015 #define glm_gtx_transform
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtc/matrix_transform.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_transform extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace transform 
-00028 {
-00029         using namespace gtc::matrix_transform; 
-00030 
-00033 
-00036         template <typename T> 
-00037         detail::tmat4x4<T> translate(
-00038                 T x, T y, T z);
-00039                 
-00042         template <typename T> 
-00043         detail::tmat4x4<T> translate(
-00044                 detail::tmat4x4<T> const & m, 
-00045                 T x, T y, T z);
-00046                 
-00049         template <typename T> 
-00050         detail::tmat4x4<T> translate(
-00051                 detail::tvec3<T> const & v);
-00052 
-00055         template <typename T> 
-00056         detail::tmat4x4<T> rotate(
-00057                 T angle, 
-00058                 T x, T y, T z);
-00059 
-00062         template <typename T> 
-00063         detail::tmat4x4<T> rotate(
-00064                 T angle, 
-00065                 detail::tvec3<T> const & v);
-00066 
-00069         template <typename T> 
-00070         detail::tmat4x4<T> rotate(
-00071                 detail::tmat4x4<T> const & m, 
-00072                 T angle, 
-00073                 T x, T y, T z);
-00074                 
-00077         template <typename T> 
-00078         detail::tmat4x4<T> scale(
-00079                 T x, T y, T z);
-00080                 
-00083         template <typename T> 
-00084         detail::tmat4x4<T> scale(
-00085                 detail::tmat4x4<T> const & m, 
-00086                 T x, T y, T z);
-00087 
-00090         template <typename T> 
-00091         detail::tmat4x4<T> scale(
-00092                 detail::tvec3<T> const & v);
-00093 
-00095 }//namespace transform
-00096 }//namespace gtx
-00097 }//namespace glm
-00098 
-00099 #include "transform.inl"
-00100 
-00101 namespace glm{using namespace gtx::transform;}
-00102 
-00103 #endif//glm_gtx_transform
-
-
- - - diff --git a/doc/api-0.9.2/a00109_source.html b/doc/api-0.9.2/a00109_source.html deleted file mode 100644 index adfc8e15..00000000 --- a/doc/api-0.9.2/a00109_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - -transform2.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
transform2.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-21
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/transform2.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_transform
-00013 
-00014 #ifndef glm_gtx_transform2
-00015 #define glm_gtx_transform2
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtx/transform.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_transform2 extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace transform2 
-00028 {
-00029         using namespace gtx::transform;
-00030 
-00033 
-00036         template <typename T> 
-00037         detail::tmat3x3<T> shearX2D(
-00038                 detail::tmat3x3<T> const & m, 
-00039                 T y);
-00040 
-00043         template <typename T> 
-00044         detail::tmat3x3<T> shearY2D(
-00045                 detail::tmat3x3<T> const & m, 
-00046                 T x);
-00047 
-00050         template <typename T> 
-00051         detail::tmat4x4<T> shearX3D(
-00052                 const detail::tmat4x4<T> & m,
-00053                 T y, 
-00054                 T z);
-00055                 
-00058         template <typename T> 
-00059         detail::tmat4x4<T> shearY3D(
-00060                 const detail::tmat4x4<T> & m, 
-00061                 T x, 
-00062                 T z);
-00063                 
-00066         template <typename T> 
-00067         detail::tmat4x4<T> shearZ3D(
-00068                 const detail::tmat4x4<T> & m, 
-00069                 T x, 
-00070                 T y);
-00071 
-00072         //template <typename T> GLM_FUNC_QUALIFIER detail::tmat4x4<T> shear(const detail::tmat4x4<T> & m, shearPlane, planePoint, angle)
-00073         // Identity + tan(angle) * cross(Normal, OnPlaneVector)     0
-00074         // - dot(PointOnPlane, normal) * OnPlaneVector              1
-00075 
-00076         // Reflect functions seem to don't work
-00077         //template <typename T> detail::tmat3x3<T> reflect2D(const detail::tmat3x3<T> & m, const detail::tvec3<T>& normal){return reflect2DGTX(m, normal);}                                                                     //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
-00078         //template <typename T> detail::tmat4x4<T> reflect3D(const detail::tmat4x4<T> & m, const detail::tvec3<T>& normal){return reflect3DGTX(m, normal);}                                                                     //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
-00079                 
-00082         template <typename T> 
-00083         detail::tmat3x3<T> proj2D(
-00084                 const detail::tmat3x3<T> & m, 
-00085                 const detail::tvec3<T>& normal);
-00086                                 
-00089         template <typename T> 
-00090         detail::tmat4x4<T> proj3D(
-00091                 const detail::tmat4x4<T> & m, 
-00092                 const detail::tvec3<T>& normal);
-00093 
-00096         template <typename valType> 
-00097         detail::tmat4x4<valType> scaleBias(
-00098                 valType scale, 
-00099                 valType bias);
-00100 
-00103         template <typename valType> 
-00104         detail::tmat4x4<valType> scaleBias(
-00105                 detail::tmat4x4<valType> const & m, 
-00106                 valType scale, 
-00107                 valType bias);
-00108 
-00110 }// namespace transform2
-00111 }// namespace gtx
-00112 }// namespace glm
-00113 
-00114 #include "transform2.inl"
-00115 
-00116 namespace glm{using namespace gtx::transform2;}
-00117 
-00118 #endif//glm_gtx_transform2
-
-
- - - diff --git a/doc/api-0.9.2/a00110_source.html b/doc/api-0.9.2/a00110_source.html deleted file mode 100644 index ecd6009a..00000000 --- a/doc/api-0.9.2/a00110_source.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - -type.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-01-08
-00005 // Updated : 2008-01-08
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type.hpp
-00009 
-00010 #ifndef glm_core_type
-00011 #define glm_core_type
-00012 
-00013 #include "type_half.hpp"
-00014 #include "type_float.hpp"
-00015 #include "type_int.hpp"
-00016 
-00017 #include "type_gentype.hpp"
-00018 
-00019 #include "type_vec1.hpp"
-00020 #include "type_vec2.hpp"
-00021 #include "type_vec3.hpp"
-00022 #include "type_vec4.hpp"
-00023 
-00024 #include "type_mat2x2.hpp"
-00025 #include "type_mat2x3.hpp"
-00026 #include "type_mat2x4.hpp"
-00027 #include "type_mat3x2.hpp"
-00028 #include "type_mat3x3.hpp"
-00029 #include "type_mat3x4.hpp"
-00030 #include "type_mat4x2.hpp"
-00031 #include "type_mat4x3.hpp"
-00032 #include "type_mat4x4.hpp"
-00033 
-00034 namespace glm{
-00035 namespace core{
-00036 namespace type
-00037 {
-00039         // Float definition
-00040 
-00041 #if(defined(GLM_PRECISION_HIGHP_FLOAT))
-00042         typedef precision::highp_vec2           vec2;
-00043         typedef precision::highp_vec3           vec3;
-00044         typedef precision::highp_vec4           vec4;
-00045         typedef precision::highp_mat2x2         mat2x2;
-00046         typedef precision::highp_mat2x3         mat2x3;
-00047         typedef precision::highp_mat2x4         mat2x4;
-00048         typedef precision::highp_mat3x2         mat3x2;
-00049         typedef precision::highp_mat3x3         mat3x3;
-00050         typedef precision::highp_mat3x4         mat3x4;
-00051         typedef precision::highp_mat4x2         mat4x2;
-00052         typedef precision::highp_mat4x3         mat4x3;
-00053         typedef precision::highp_mat4x4         mat4x4;
-00054 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
-00055         typedef precision::mediump_vec2         vec2;
-00056         typedef precision::mediump_vec3         vec3;
-00057         typedef precision::mediump_vec4         vec4;
-00058         typedef precision::mediump_mat2x2       mat2x2;
-00059         typedef precision::mediump_mat2x3       mat2x3;
-00060         typedef precision::mediump_mat2x4       mat2x4;
-00061         typedef precision::mediump_mat3x2       mat3x2;
-00062         typedef precision::mediump_mat3x3       mat3x3;
-00063         typedef precision::mediump_mat3x4       mat3x4;
-00064         typedef precision::mediump_mat4x2       mat4x2;
-00065         typedef precision::mediump_mat4x3       mat4x3;
-00066         typedef precision::mediump_mat4x4       mat4x4;
-00067 #elif(defined(GLM_PRECISION_LOWP_FLOAT))
-00068         typedef precision::lowp_vec2                    vec2;
-00069         typedef precision::lowp_vec3                    vec3;
-00070         typedef precision::lowp_vec4                    vec4;
-00071         typedef precision::lowp_mat2x2                  mat2x2;
-00072         typedef precision::lowp_mat2x3                  mat2x3;
-00073         typedef precision::lowp_mat2x4                  mat2x4;
-00074         typedef precision::lowp_mat3x2                  mat3x2;
-00075         typedef precision::lowp_mat3x3                  mat3x3;
-00076         typedef precision::lowp_mat3x4                  mat3x4;
-00077         typedef precision::lowp_mat4x2                  mat4x2;
-00078         typedef precision::lowp_mat4x3                  mat4x3;
-00079         typedef precision::lowp_mat4x4                  mat4x4;
-00080 #else
-00081 
-00082 
-00083 
-00084         typedef precision::mediump_vec2         vec2;
-00085 
-00089         typedef precision::mediump_vec3         vec3;
-00090 
-00094         typedef precision::mediump_vec4         vec4;
-00095 
-00099         typedef precision::mediump_mat2x2               mat2x2;
-00100 
-00104         typedef precision::mediump_mat2x3               mat2x3;
-00105 
-00109         typedef precision::mediump_mat2x4               mat2x4;
-00110 
-00114         typedef precision::mediump_mat3x2               mat3x2;
-00115 
-00119         typedef precision::mediump_mat3x3               mat3x3;
-00120 
-00124         typedef precision::mediump_mat3x4               mat3x4;
-00125 
-00129         typedef precision::mediump_mat4x2               mat4x2;
-00130 
-00134         typedef precision::mediump_mat4x3               mat4x3;
-00135 
-00139         typedef precision::mediump_mat4x4               mat4x4;
-00140 
-00141 #endif//GLM_PRECISION
-00142 
-00146         typedef mat2x2                                                  mat2;
-00147 
-00151         typedef mat3x3                                                  mat3;
-00152 
-00156         typedef mat4x4                                                  mat4;
-00157 
-00159         // Signed integer definition
-00160 
-00161 #if(defined(GLM_PRECISION_HIGHP_INT))
-00162         typedef precision::highp_ivec2                  ivec2;
-00163         typedef precision::highp_ivec3                  ivec3;
-00164         typedef precision::highp_ivec4                  ivec4;
-00165 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
-00166         typedef precision::mediump_ivec2                ivec2;
-00167         typedef precision::mediump_ivec3                ivec3;
-00168         typedef precision::mediump_ivec4                ivec4;
-00169 #elif(defined(GLM_PRECISION_LOWP_INT))
-00170         typedef precision::lowp_ivec2                   ivec2;
-00171         typedef precision::lowp_ivec3                   ivec3;
-00172         typedef precision::lowp_ivec4                   ivec4;
-00173 #else
-00174 
-00175 
-00176 
-00177         typedef precision::mediump_ivec2                ivec2;
-00178 
-00182         typedef precision::mediump_ivec3                ivec3;
-00183 
-00187         typedef precision::mediump_ivec4                ivec4;
-00188 #endif//GLM_PRECISION
-00189 
-00191         // Unsigned integer definition
-00192 
-00193 #if(defined(GLM_PRECISION_HIGHP_UINT))
-00194         typedef precision::highp_uvec2                  uvec2;
-00195         typedef precision::highp_uvec3                  uvec3;
-00196         typedef precision::highp_uvec4                  uvec4;
-00197 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
-00198         typedef precision::mediump_uvec2                uvec2;
-00199         typedef precision::mediump_uvec3                uvec3;
-00200         typedef precision::mediump_uvec4                uvec4;
-00201 #elif(defined(GLM_PRECISION_LOWP_UINT))
-00202         typedef precision::lowp_uvec2                   uvec2;
-00203         typedef precision::lowp_uvec3                   uvec3;
-00204         typedef precision::lowp_uvec4                   uvec4;
-00205 #else
-00206 
-00207 
-00208 
-00209         typedef precision::mediump_uvec2                uvec2;
-00210 
-00214         typedef precision::mediump_uvec3                uvec3;
-00215 
-00219         typedef precision::mediump_uvec4                uvec4;
-00220 #endif//GLM_PRECISION
-00221 
-00223         // Boolean definition
-00224 
-00228         typedef detail::tvec2<bool>             bvec2;
-00229 
-00233         typedef detail::tvec3<bool>             bvec3;
-00234 
-00238         typedef detail::tvec4<bool>             bvec4;
-00239 
-00241         // Double definition
-00242 
-00246         typedef detail::tvec2<double>   dvec2;
-00247 
-00251         typedef detail::tvec3<double>   dvec3;
-00252 
-00256         typedef detail::tvec4<double>   dvec4;
-00257 
-00261         typedef detail::tmat2x2<double> dmat2;
-00262 
-00266         typedef detail::tmat3x3<double> dmat3;
-00267 
-00271         typedef detail::tmat4x4<double> dmat4;
-00272 
-00276         typedef detail::tmat2x2<double> dmat2x2;
-00277 
-00281         typedef detail::tmat2x3<double> dmat2x3;
-00282 
-00286         typedef detail::tmat2x4<double> dmat2x4;
-00287 
-00291         typedef detail::tmat3x2<double> dmat3x2;
-00292 
-00296         typedef detail::tmat3x3<double> dmat3x3;
-00297 
-00301         typedef detail::tmat3x4<double> dmat3x4;
-00302 
-00306         typedef detail::tmat4x2<double> dmat4x2;
-00307 
-00311         typedef detail::tmat4x3<double> dmat4x3;
-00312 
-00316         typedef detail::tmat4x4<double> dmat4x4;
-00317 
-00318 }//namespace type
-00319 }//namespace core
-00320 }//namespace glm
-00321 
-00322 #endif//glm_core_type
-
-
- - - diff --git a/doc/api-0.9.2/a00111_source.html b/doc/api-0.9.2/a00111_source.html deleted file mode 100644 index 0aa17f28..00000000 --- a/doc/api-0.9.2/a00111_source.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - -type_float.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_float.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-22
-00005 // Updated : 2010-02-08
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_float.hpp
-00009 
-00010 #ifndef glm_core_type_float
-00011 #define glm_core_type_float
-00012 
-00013 #include "type_half.hpp"
-00014 #include "setup.hpp"
-00015 
-00016 namespace glm
-00017 {
-00018         namespace detail
-00019         {
-00020                 GLM_DETAIL_IS_FLOAT(detail::thalf);
-00021                 GLM_DETAIL_IS_FLOAT(float);
-00022                 GLM_DETAIL_IS_FLOAT(double);
-00023                 GLM_DETAIL_IS_FLOAT(long double);
-00024         }
-00025         //namespace detail
-00026 
-00027         namespace core{
-00028         namespace type{
-00029 
-00030         namespace precision
-00031         {
-00032 #ifdef GLM_USE_HALF_SCALAR
-00033                 typedef detail::thalf           lowp_float_t;
-00034 #else//GLM_USE_HALF_SCALAR
-00035                 typedef float                           lowp_float_t;
-00036 #endif//GLM_USE_HALF_SCALAR
-00037                 typedef float                           mediump_float_t;
-00038                 typedef double                          highp_float_t;
-00039 
-00044                 typedef lowp_float_t            lowp_float;
-00049                 typedef mediump_float_t     mediump_float;
-00054                 typedef highp_float_t           highp_float;
-00055         }
-00056         //namespace precision
-00057 
-00058 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
-00059         typedef precision::mediump_float                                float_t;
-00060 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
-00061         typedef precision::highp_float                  float_t;
-00062 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
-00063         typedef precision::mediump_float                                float_t;
-00064 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
-00065         typedef precision::lowp_float                                   float_t;
-00066 #else
-00067 #       error "GLM error: multiple default precision requested for floating-point types"
-00068 #endif
-00069 
-00070         }//namespace type
-00071         }//namespace core
-00072 }//namespace glm
-00073 
-00074 #endif//glm_core_type_float
-
-
- - - diff --git a/doc/api-0.9.2/a00113_source.html b/doc/api-0.9.2/a00113_source.html deleted file mode 100644 index c755ce81..00000000 --- a/doc/api-0.9.2/a00113_source.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - -type_half.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_half.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-17
-00005 // Updated : 2010-02-17
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_half.hpp
-00009 
-00010 #ifndef glm_core_type_half
-00011 #define glm_core_type_half
-00012 
-00013 #include <cstdlib>
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         typedef short hdata;
-00019 
-00020         float toFloat32(hdata value);
-00021         hdata toFloat16(float const & value);
-00022 
-00025         class thalf
-00026         {
-00027         public: 
-00028                 // Constructors
-00029                 GLM_FUNC_DECL thalf();
-00030                 GLM_FUNC_DECL thalf(thalf const & s);
-00031                         
-00032                 template <typename U>
-00033                 GLM_FUNC_DECL explicit thalf(U const & s);
-00034 
-00035                 // Cast
-00036                 //operator float();
-00037                 GLM_FUNC_DECL operator float() const;
-00038                 //operator double();
-00039                 //operator double() const;
-00040 
-00041                 // Unary updatable operators
-00042                 GLM_FUNC_DECL thalf& operator= (thalf const & s);
-00043                 GLM_FUNC_DECL thalf& operator+=(thalf const & s);
-00044                 GLM_FUNC_DECL thalf& operator-=(thalf const & s);
-00045                 GLM_FUNC_DECL thalf& operator*=(thalf const & s);
-00046                 GLM_FUNC_DECL thalf& operator/=(thalf const & s);
-00047                 GLM_FUNC_DECL thalf& operator++();
-00048                 GLM_FUNC_DECL thalf& operator--();
-00049         
-00050                 GLM_FUNC_DECL float toFloat() const{return toFloat32(data);}
-00051 
-00052                 GLM_FUNC_DECL hdata _data() const{return data;}
-00053 
-00054         private:
-00055                 hdata data;
-00056         };
-00057 
-00058         thalf operator+ (thalf const & s1, thalf const & s2);
-00059 
-00060         thalf operator- (thalf const & s1, thalf const & s2);
-00061 
-00062         thalf operator* (thalf const & s1, thalf const & s2);
-00063 
-00064         thalf operator/ (thalf const & s1, thalf const & s2);
-00065 
-00066         // Unary constant operators
-00067         thalf operator- (thalf const & s);
-00068 
-00069         thalf operator-- (thalf const & s, int);
-00070 
-00071         thalf operator++ (thalf const & s, int);
-00072 
-00073 }//namespace detail
-00074 }//namespace glm
-00075 
-00076 #include "type_half.inl"
-00077 
-00078 #endif//glm_core_type_half
-
-
- - - diff --git a/doc/api-0.9.2/a00114_source.html b/doc/api-0.9.2/a00114_source.html deleted file mode 100644 index 53d2063a..00000000 --- a/doc/api-0.9.2/a00114_source.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - -type_int.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_int.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-22
-00005 // Updated : 2008-09-17
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_int.hpp
-00009 
-00010 #ifndef glm_core_type_int
-00011 #define glm_core_type_int
-00012 
-00013 #include "setup.hpp"
-00014 #include "_detail.hpp"
-00015 
-00016 namespace glm{
-00017 namespace detail
-00018 {
-00019         typedef signed short                    lowp_int_t;
-00020         typedef signed int                              mediump_int_t;
-00021         typedef sint64                                  highp_int_t;
-00022 
-00023         typedef unsigned short                  lowp_uint_t;
-00024         typedef unsigned int                    mediump_uint_t;
-00025         typedef uint64                                  highp_uint_t;
-00026 
-00027         GLM_DETAIL_IS_INT(signed char);
-00028         GLM_DETAIL_IS_INT(signed short);
-00029         GLM_DETAIL_IS_INT(signed int);
-00030         GLM_DETAIL_IS_INT(signed long);
-00031         GLM_DETAIL_IS_INT(highp_int_t);
-00032 
-00033         GLM_DETAIL_IS_UINT(unsigned char);
-00034         GLM_DETAIL_IS_UINT(unsigned short);
-00035         GLM_DETAIL_IS_UINT(unsigned int);
-00036         GLM_DETAIL_IS_UINT(unsigned long);
-00037         GLM_DETAIL_IS_UINT(highp_uint_t);
-00038 }//namespace detail
-00039 
-00040 namespace core{
-00041 namespace type{
-00042 namespace precision 
-00043 {
-00048         typedef detail::lowp_int_t                              lowp_int;
-00053         typedef detail::mediump_int_t                           mediump_int;
-00058         typedef detail::highp_int_t                             highp_int;
-00059 
-00064         typedef detail::lowp_uint_t                             lowp_uint;
-00069         typedef detail::mediump_uint_t                  mediump_uint;
-00074         typedef detail::highp_uint_t                            highp_uint;
-00075 }//namespace precision
-00076 
-00077 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
-00078         typedef precision::mediump_int                          int_t;
-00079 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
-00080         typedef precision::highp_int                                    int_t;
-00081 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
-00082         typedef precision::mediump_int                          int_t;
-00083 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT))
-00084         typedef precision::lowp_int                                     int_t;
-00085 #else
-00086 #       error "GLM error: multiple default precision requested for signed interger types"
-00087 #endif
-00088 
-00089 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
-00090         typedef precision::mediump_uint                         uint_t;
-00091 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
-00092         typedef precision::highp_uint                                   uint_t;
-00093 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
-00094         typedef precision::mediump_uint                         uint_t;
-00095 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT))
-00096         typedef precision::lowp_uint                                    uint_t;
-00097 #else
-00098 #       error "GLM error: multiple default precision requested for unsigned interger types"
-00099 #endif
-00100 
-00103         typedef uint_t                                                          uint;
-00104 
-00105 }//namespace type
-00106 }//namespace core
-00107 }//namespace glm
-00108 
-00109 #endif//glm_core_type_int
-
-
- - - diff --git a/doc/api-0.9.2/a00115_source.html b/doc/api-0.9.2/a00115_source.html deleted file mode 100644 index b96647b0..00000000 --- a/doc/api-0.9.2/a00115_source.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - -type_mat.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2010-01-26
-00005 // Updated : 2010-01-26
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat.hpp
-00009 
-00010 #ifndef glm_core_type_mat
-00011 #define glm_core_type_mat
-00012 
-00013 #include "type_gentype.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         //template 
-00019         //<
-00020         //      typename T, 
-00021         //      template <typename> class C, 
-00022         //      template <typename> class R
-00023         //>
-00024         //struct matType
-00025         //{
-00026         //      enum ctor{null};
-00027         //      typedef T value_type;
-00028         //      typedef std::size_t size_type;
-00029         //      typedef C<T> col_type;
-00030         //      typedef R<T> row_type;
-00031         //      static size_type const col_size;
-00032         //      static size_type const row_size;
-00033         //};
-00034 
-00035         //template 
-00036         //<
-00037         //      typename T, 
-00038         //      template <typename> class C, 
-00039         //      template <typename> class R
-00040         //>
-00041         //typename matType<T, C, R>::size_type const 
-00042         //matType<T, C, R>::col_size = matType<T, C, R>::col_type::value_size;
-00043 
-00044         //template 
-00045         //<
-00046         //      typename T, 
-00047         //      template <typename> class C, 
-00048         //      template <typename> class R
-00049         //>
-00050         //typename matType<T, C, R>::size_type const 
-00051         //matType<T, C, R>::row_size = matType<T, C, R>::row_type::value_size;
-00052 
-00053 }//namespace detail
-00054 }//namespace glm
-00055 
-00056 #endif//glm_core_type_mat
-
-
- - - diff --git a/doc/api-0.9.2/a00116_source.html b/doc/api-0.9.2/a00116_source.html deleted file mode 100644 index c3058c1a..00000000 --- a/doc/api-0.9.2/a00116_source.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - -type_mat2x2.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat2x2.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-01-27
-00005 // Updated : 2010-02-11
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat2x2.hpp
-00009 
-00010 #ifndef glm_core_type_mat2x2
-00011 #define glm_core_type_mat2x2
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat2x2
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec2<T> col_type;
-00041                 typedef tvec2<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat2x2<T> type;
-00046                 typedef tmat2x2<T> transpose_type;
-00047 
-00048         public:
-00049                 // Implementation detail
-00050                 GLM_FUNC_DECL tmat2x2<T> _inverse() const;
-00051 
-00052         private:
-00054                 // Data 
-00055                 col_type value[2];
-00056 
-00057         public:
-00059                 // Constructors
-00060                 GLM_FUNC_DECL tmat2x2();
-00061                 GLM_FUNC_DECL tmat2x2(
-00062                         tmat2x2 const & m);
-00063 
-00064                 GLM_FUNC_DECL explicit tmat2x2(
-00065                         ctor Null);
-00066                 GLM_FUNC_DECL explicit tmat2x2(
-00067                         value_type const & x);
-00068                 GLM_FUNC_DECL explicit tmat2x2(
-00069                         value_type const & x1, value_type const & y1, 
-00070                         value_type const & x2, value_type const & y2);
-00071                 GLM_FUNC_DECL explicit tmat2x2(
-00072                         col_type const & v1, 
-00073                         col_type const & v2);
-00074 
-00076                 // Conversions
-00077                 template <typename U> 
-00078                 GLM_FUNC_DECL explicit tmat2x2(
-00079                         U const & x);
-00080                         
-00081                 template <typename U, typename V, typename M, typename N> 
-00082                 GLM_FUNC_DECL explicit tmat2x2(
-00083                         U const & x1, V const & y1, 
-00084                         M const & x2, N const & y2);
-00085                         
-00086                 template <typename U, typename V> 
-00087                 GLM_FUNC_DECL explicit tmat2x2(
-00088                         tvec2<U> const & v1, 
-00089                         tvec2<V> const & v2);
-00090 
-00092                 // Matrix conversions
-00093                 template <typename U> 
-00094                 GLM_FUNC_DECL explicit tmat2x2(tmat2x2<U> const & m);
-00095 
-00096                 GLM_FUNC_DECL explicit tmat2x2(tmat3x3<T> const & x);
-00097                 GLM_FUNC_DECL explicit tmat2x2(tmat4x4<T> const & x);
-00098                 GLM_FUNC_DECL explicit tmat2x2(tmat2x3<T> const & x);
-00099                 GLM_FUNC_DECL explicit tmat2x2(tmat3x2<T> const & x);
-00100                 GLM_FUNC_DECL explicit tmat2x2(tmat2x4<T> const & x);
-00101                 GLM_FUNC_DECL explicit tmat2x2(tmat4x2<T> const & x);
-00102                 GLM_FUNC_DECL explicit tmat2x2(tmat3x4<T> const & x);
-00103                 GLM_FUNC_DECL explicit tmat2x2(tmat4x3<T> const & x);
-00104 
-00106                 // Accesses
-00107 
-00108                 GLM_FUNC_DECL col_type & operator[](size_type i);
-00109                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
-00110 
-00111                 // Unary updatable operators
-00112                 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<T> const & m);
-00113                 template <typename U> 
-00114                 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<U> const & m);
-00115                 template <typename U> 
-00116                 GLM_FUNC_DECL tmat2x2<T> & operator+=(U const & s);
-00117                 template <typename U> 
-00118                 GLM_FUNC_DECL tmat2x2<T> & operator+=(tmat2x2<U> const & m);
-00119                 template <typename U> 
-00120                 GLM_FUNC_DECL tmat2x2<T> & operator-=(U const & s);
-00121                 template <typename U> 
-00122                 GLM_FUNC_DECL tmat2x2<T> & operator-=(tmat2x2<U> const & m);
-00123                 template <typename U> 
-00124                 GLM_FUNC_DECL tmat2x2<T> & operator*=(U const & s);
-00125                 template <typename U> 
-00126                 GLM_FUNC_DECL tmat2x2<T> & operator*=(tmat2x2<U> const & m);
-00127                 template <typename U> 
-00128                 GLM_FUNC_DECL tmat2x2<T> & operator/=(U const & s);
-00129                 template <typename U> 
-00130                 GLM_FUNC_DECL tmat2x2<T> & operator/=(tmat2x2<U> const & m);
-00131                 GLM_FUNC_DECL tmat2x2<T> & operator++();
-00132                 GLM_FUNC_DECL tmat2x2<T> & operator--();
-00133         };
-00134 
-00135         // Binary operators
-00136         template <typename T> 
-00137         tmat2x2<T> operator+ (
-00138                 tmat2x2<T> const & m, 
-00139                 typename tmat2x2<T>::value_type const & s);
-00140 
-00141         template <typename T> 
-00142         tmat2x2<T> operator+ (
-00143                 typename tmat2x2<T>::value_type const & s, 
-00144                 tmat2x2<T> const & m);
-00145 
-00146         template <typename T> 
-00147         tmat2x2<T> operator+ (
-00148                 tmat2x2<T> const & m1, 
-00149                 tmat2x2<T> const & m2);
-00150             
-00151         template <typename T> 
-00152         tmat2x2<T> operator- (
-00153                 tmat2x2<T> const & m, 
-00154                 typename tmat2x2<T>::value_type const & s);
-00155 
-00156         template <typename T> 
-00157         tmat2x2<T> operator- (
-00158                 typename tmat2x2<T>::value_type const & s, 
-00159                 tmat2x2<T> const & m);
-00160 
-00161         template <typename T> 
-00162         tmat2x2<T> operator- (
-00163                 tmat2x2<T> const & m1, 
-00164                 tmat2x2<T> const & m2);
-00165 
-00166         template <typename T> 
-00167         tmat2x2<T> operator* (
-00168                 tmat2x2<T> const & m, 
-00169                 typename tmat2x2<T>::value_type const & s);
-00170 
-00171         template <typename T> 
-00172         tmat2x2<T> operator* (
-00173                 typename tmat2x2<T>::value_type const & s, 
-00174                 tmat2x2<T> const & m);
-00175 
-00176         template <typename T> 
-00177         typename tmat2x2<T>::col_type operator* (
-00178                 tmat2x2<T> const & m, 
-00179                 typename tmat2x2<T>::row_type const & v);
-00180 
-00181         template <typename T> 
-00182         typename tmat2x2<T>::row_type operator* (
-00183                 typename tmat2x2<T>::col_type const & v, 
-00184                 tmat2x2<T> const & m);
-00185 
-00186         template <typename T> 
-00187         tmat2x2<T> operator* (
-00188                 tmat2x2<T> const & m1, 
-00189                 tmat2x2<T> const & m2);
-00190 
-00191         template <typename T> 
-00192         tmat2x2<T> operator/ (
-00193                 tmat2x2<T> const & m, 
-00194                 typename tmat2x2<T>::value_type const & s);
-00195 
-00196         template <typename T> 
-00197         tmat2x2<T> operator/ (
-00198                 typename tmat2x2<T>::value_type const & s,
-00199                 tmat2x2<T> const & m);
-00200 
-00201         template <typename T> 
-00202         typename tmat2x2<T>::col_type operator/ (
-00203                 tmat2x2<T> const & m, 
-00204                 typename tmat2x2<T>::row_type const & v);
-00205 
-00206         template <typename T> 
-00207         typename tmat2x2<T>::row_type operator/ (
-00208                 typename tmat2x2<T>::col_type const & v, 
-00209                 tmat2x2<T> const & m);
-00210 
-00211         template <typename T> 
-00212         tmat2x2<T> operator/ (
-00213                 tmat2x2<T> const & m1, 
-00214                 tmat2x2<T> const & m2);
-00215 
-00216         // Unary constant operators
-00217         template <typename T> 
-00218         tmat2x2<T> const operator-  (
-00219                 tmat2x2<T> const & m);
-00220 
-00221         template <typename T> 
-00222         tmat2x2<T> const operator-- (
-00223                 tmat2x2<T> const & m, 
-00224                 int);
-00225 
-00226         template <typename T> 
-00227         tmat2x2<T> const operator++ (
-00228                 tmat2x2<T> const & m, 
-00229                 int);
-00230 } //namespace detail
-00231 
-00232 namespace core{
-00233 namespace type{
-00234 namespace precision
-00235 {
-00240         typedef detail::tmat2x2<lowp_float>             lowp_mat2;
-00241 
-00246         typedef detail::tmat2x2<mediump_float>  mediump_mat2;
-00247 
-00252         typedef detail::tmat2x2<highp_float>    highp_mat2;
-00253 
-00258         typedef detail::tmat2x2<lowp_float>             lowp_mat2x2;
-00259 
-00264         typedef detail::tmat2x2<mediump_float>  mediump_mat2x2;
-00265 
-00270         typedef detail::tmat2x2<highp_float>    highp_mat2x2;
-00271 
-00272 }//namespace precision
-00273 }//namespace type
-00274 }//namespace core
-00275 }//namespace glm
-00276 
-00277 #ifndef GLM_EXTERNAL_TEMPLATE
-00278 #include "type_mat2x2.inl"
-00279 #endif
-00280 
-00281 #endif //glm_core_type_mat2x2
-
-
- - - diff --git a/doc/api-0.9.2/a00117_source.html b/doc/api-0.9.2/a00117_source.html deleted file mode 100644 index e56df0a3..00000000 --- a/doc/api-0.9.2/a00117_source.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - -type_mat2x3.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat2x3.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-10-01
-00005 // Updated : 2010-02-03
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat2x3.hpp
-00009 
-00010 #ifndef glm_core_type_mat2x3
-00011 #define glm_core_type_mat2x3
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat2x3
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec3<T> col_type;
-00041                 typedef tvec2<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat2x3<T> type;
-00046                 typedef tmat3x2<T> transpose_type;
-00047 
-00048         private:
-00049                 // Data 
-00050                 col_type value[2];
-00051 
-00052         public:
-00053                 // Constructors
-00054                 GLM_FUNC_DECL tmat2x3();
-00055                 GLM_FUNC_DECL tmat2x3(tmat2x3 const & m);
-00056 
-00057                 GLM_FUNC_DECL explicit tmat2x3(
-00058                         ctor);
-00059                 GLM_FUNC_DECL explicit tmat2x3(
-00060                         value_type const & s);
-00061                 GLM_FUNC_DECL explicit tmat2x3(
-00062                         value_type const & x0, value_type const & y0, value_type const & z0,
-00063                         value_type const & x1, value_type const & y1, value_type const & z1);
-00064                 GLM_FUNC_DECL explicit tmat2x3(
-00065                         col_type const & v0, 
-00066                         col_type const & v1);
-00067 
-00068             
-00070                 // Conversions
-00071                 template <typename U> 
-00072                 GLM_FUNC_DECL explicit tmat2x3(
-00073             U const & x);
-00074                         
-00075                 template <typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2> 
-00076                 GLM_FUNC_DECL explicit tmat2x3(
-00077             X1 const & x1, Y1 const & y1, Z1 const & z1, 
-00078             X2 const & x2, Y2 const & y2, Z2 const & z2);
-00079                         
-00080                 template <typename U, typename V> 
-00081                 GLM_FUNC_DECL explicit tmat2x3(
-00082             tvec3<U> const & v1, 
-00083             tvec3<V> const & v2);
-00084             
-00086         // Matrix conversion
-00087                 template <typename U> 
-00088                 GLM_FUNC_DECL explicit tmat2x3(tmat2x3<U> const & m);
-00089 
-00090                 GLM_FUNC_DECL explicit tmat2x3(tmat2x2<T> const & x);
-00091                 GLM_FUNC_DECL explicit tmat2x3(tmat3x3<T> const & x);
-00092                 GLM_FUNC_DECL explicit tmat2x3(tmat4x4<T> const & x);
-00093                 GLM_FUNC_DECL explicit tmat2x3(tmat2x4<T> const & x);
-00094                 GLM_FUNC_DECL explicit tmat2x3(tmat3x2<T> const & x);
-00095                 GLM_FUNC_DECL explicit tmat2x3(tmat3x4<T> const & x);
-00096                 GLM_FUNC_DECL explicit tmat2x3(tmat4x2<T> const & x);
-00097                 GLM_FUNC_DECL explicit tmat2x3(tmat4x3<T> const & x);
-00098 
-00099                 // Accesses
-00100                 col_type & operator[](size_type i);
-00101                 col_type const & operator[](size_type i) const;
-00102 
-00103                 // Unary updatable operators
-00104                 GLM_FUNC_DECL tmat2x3<T> & operator=  (tmat2x3<T> const & m);
-00105                 template <typename U> 
-00106                 GLM_FUNC_DECL tmat2x3<T> & operator=  (tmat2x3<U> const & m);
-00107                 template <typename U> 
-00108                 GLM_FUNC_DECL tmat2x3<T> & operator+= (U const & s);
-00109                 template <typename U> 
-00110                 GLM_FUNC_DECL tmat2x3<T> & operator+= (tmat2x3<U> const & m);
-00111                 template <typename U> 
-00112                 GLM_FUNC_DECL tmat2x3<T> & operator-= (U const & s);
-00113                 template <typename U> 
-00114                 GLM_FUNC_DECL tmat2x3<T> & operator-= (tmat2x3<U> const & m);
-00115                 template <typename U> 
-00116                 GLM_FUNC_DECL tmat2x3<T> & operator*= (U const & s);
-00117                 template <typename U> 
-00118                 GLM_FUNC_DECL tmat2x3<T> & operator*= (tmat2x3<U> const & m);
-00119                 template <typename U> 
-00120                 GLM_FUNC_DECL tmat2x3<T> & operator/= (U const & s);
-00121 
-00122                 GLM_FUNC_DECL tmat2x3<T> & operator++ ();
-00123                 GLM_FUNC_DECL tmat2x3<T> & operator-- ();
-00124         };
-00125 
-00126         // Binary operators
-00127         template <typename T> 
-00128         tmat2x3<T> operator+ (
-00129                 tmat2x3<T> const & m, 
-00130                 typename tmat2x3<T>::value_type const & s);
-00131             
-00132         template <typename T> 
-00133         tmat2x3<T> operator+ (
-00134                 tmat2x3<T> const & m1, 
-00135                 tmat2x3<T> const & m2);
-00136             
-00137         template <typename T> 
-00138         tmat2x3<T> operator- (
-00139                 tmat2x3<T> const & m, 
-00140                 typename tmat2x3<T>::value_type const & s);
-00141 
-00142         template <typename T> 
-00143         tmat2x3<T> operator- (
-00144                 tmat2x3<T> const & m1, 
-00145                 tmat2x3<T> const & m2);
-00146 
-00147         template <typename T> 
-00148         tmat2x3<T> operator* (
-00149                 tmat2x3<T> const & m, 
-00150                 typename tmat2x3<T>::value_type const & s);
-00151 
-00152         template <typename T> 
-00153         tmat2x3<T> operator* (
-00154                 typename tmat2x3<T>::value_type const & s, 
-00155                 tmat2x3<T> const & m);
-00156 
-00157         template <typename T>
-00158         typename tmat2x3<T>::col_type operator* (
-00159                 tmat2x3<T> const & m, 
-00160                 typename tmat2x3<T>::row_type const & v);
-00161 
-00162         template <typename T> 
-00163         typename tmat2x3<T>::row_type operator* (
-00164                 typename tmat2x3<T>::col_type const & v, 
-00165                 tmat2x3<T> const & m);
-00166 
-00167         template <typename T>
-00168         tmat3x3<T> operator* (
-00169                 tmat2x3<T> const & m1, 
-00170                 tmat3x2<T> const & m2);
-00171 
-00172         template <typename T> 
-00173         tmat2x3<T> operator/ (
-00174                 tmat2x3<T> const & m, 
-00175                 typename tmat2x3<T>::value_type const & s);
-00176 
-00177         template <typename T> 
-00178         tmat2x3<T> operator/ (
-00179                 typename tmat2x3<T>::value_type const & s,
-00180                 tmat2x3<T> const & m);
-00181 
-00182         // Unary constant operators
-00183         template <typename T> 
-00184         tmat2x3<T> const operator-  (
-00185                 tmat2x3<T> const & m);
-00186 
-00187         template <typename T> 
-00188         tmat2x3<T> const operator-- (
-00189                 tmat2x3<T> const & m, 
-00190                 int);
-00191 
-00192         template <typename T> 
-00193         tmat2x3<T> const operator++ (
-00194                 tmat2x3<T> const & m, 
-00195                 int);
-00196 
-00197 } //namespace detail
-00198 
-00199 namespace core{
-00200 namespace type{
-00201 namespace precision
-00202 {
-00207         typedef detail::tmat2x3<lowp_float>             lowp_mat2x3;
-00212         typedef detail::tmat2x3<mediump_float>  mediump_mat2x3;
-00217         typedef detail::tmat2x3<highp_float>    highp_mat2x3;
-00218 }//namespace precision
-00219 }//namespace type
-00220 }//namespace core
-00221 }//namespace glm
-00222 
-00223 #ifndef GLM_EXTERNAL_TEMPLATE
-00224 #include "type_mat2x3.inl"
-00225 #endif
-00226 
-00227 #endif //glm_core_type_mat2x3
-
-
- - - diff --git a/doc/api-0.9.2/a00118_source.html b/doc/api-0.9.2/a00118_source.html deleted file mode 100644 index dfcd0909..00000000 --- a/doc/api-0.9.2/a00118_source.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - -type_mat2x4.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat2x4.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-08-05
-00005 // Updated : 2010-02-11
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat2x4.hpp
-00009 
-00010 #ifndef glm_core_type_mat2x4
-00011 #define glm_core_type_mat2x4
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat2x4
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec4<T> col_type;
-00041                 typedef tvec2<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat2x4<T> type;
-00046                 typedef tmat4x2<T> transpose_type;
-00047 
-00048         private:
-00049                 // Data 
-00050                 col_type value[2];
-00051 
-00052         public:
-00053                 // Constructors
-00054                 GLM_FUNC_DECL tmat2x4();
-00055                 GLM_FUNC_DECL tmat2x4(tmat2x4 const & m);
-00056 
-00057                 GLM_FUNC_DECL explicit tmat2x4(
-00058                         ctor);
-00059                 GLM_FUNC_DECL explicit tmat2x4(
-00060                         value_type const & s);
-00061                 GLM_FUNC_DECL explicit tmat2x4(
-00062                         value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
-00063                         value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1);
-00064                 GLM_FUNC_DECL explicit tmat2x4(
-00065                         col_type const & v0, 
-00066                         col_type const & v1);
-00067             
-00069                 // Conversions
-00070                 template <typename U> 
-00071                 GLM_FUNC_DECL explicit tmat2x4(
-00072             U const & x);
-00073                         
-00074                 template <
-00075             typename X1, typename Y1, typename Z1, typename W1, 
-00076             typename X2, typename Y2, typename Z2, typename W2> 
-00077                 GLM_FUNC_DECL explicit tmat2x4(
-00078             X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, 
-00079             X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2);
-00080                         
-00081                 template <typename U, typename V> 
-00082                 GLM_FUNC_DECL explicit tmat2x4(
-00083             tvec4<U> const & v1, 
-00084             tvec4<V> const & v2);
-00085             
-00087                 // Matrix conversions
-00088                 template <typename U> 
-00089                 GLM_FUNC_DECL explicit tmat2x4(tmat2x4<U> const & m);
-00090 
-00091                 GLM_FUNC_DECL explicit tmat2x4(tmat2x2<T> const & x);
-00092                 GLM_FUNC_DECL explicit tmat2x4(tmat3x3<T> const & x);
-00093                 GLM_FUNC_DECL explicit tmat2x4(tmat4x4<T> const & x);
-00094                 GLM_FUNC_DECL explicit tmat2x4(tmat2x3<T> const & x);
-00095                 GLM_FUNC_DECL explicit tmat2x4(tmat3x2<T> const & x);
-00096                 GLM_FUNC_DECL explicit tmat2x4(tmat3x4<T> const & x);
-00097                 GLM_FUNC_DECL explicit tmat2x4(tmat4x2<T> const & x);
-00098                 GLM_FUNC_DECL explicit tmat2x4(tmat4x3<T> const & x);
-00099 
-00100                 // Accesses
-00101                 GLM_FUNC_DECL col_type & operator[](size_type i);
-00102                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
-00103 
-00104                 // Unary updatable operators
-00105                 GLM_FUNC_DECL tmat2x4<T>& operator=  (tmat2x4<T> const & m);
-00106                 template <typename U> 
-00107                 GLM_FUNC_DECL tmat2x4<T>& operator=  (tmat2x4<U> const & m);
-00108                 template <typename U> 
-00109                 GLM_FUNC_DECL tmat2x4<T>& operator+= (U const & s);
-00110                 template <typename U> 
-00111                 GLM_FUNC_DECL tmat2x4<T>& operator+= (tmat2x4<U> const & m);
-00112                 template <typename U> 
-00113                 GLM_FUNC_DECL tmat2x4<T>& operator-= (U const & s);
-00114                 template <typename U> 
-00115                 GLM_FUNC_DECL tmat2x4<T>& operator-= (tmat2x4<U> const & m);
-00116                 template <typename U> 
-00117                 GLM_FUNC_DECL tmat2x4<T>& operator*= (U const & s);
-00118                 template <typename U> 
-00119                 GLM_FUNC_DECL tmat2x4<T>& operator*= (tmat2x4<U> const & m);
-00120                 template <typename U> 
-00121                 GLM_FUNC_DECL tmat2x4<T>& operator/= (U const & s);
-00122 
-00123                 GLM_FUNC_DECL tmat2x4<T>& operator++ ();
-00124                 GLM_FUNC_DECL tmat2x4<T>& operator-- ();
-00125         };
-00126 
-00127         // Binary operators
-00128         template <typename T> 
-00129         tmat2x4<T> operator+ (
-00130                 tmat2x4<T> const & m, 
-00131                 typename tmat2x4<T>::value_type const & s);
-00132             
-00133         template <typename T> 
-00134         tmat2x4<T> operator+ (
-00135                 tmat2x4<T> const & m1, 
-00136                 tmat2x4<T> const & m2);
-00137             
-00138         template <typename T> 
-00139         tmat2x4<T> operator- (
-00140                 tmat2x4<T> const & m, 
-00141                 typename tmat2x4<T>::value_type const & s);
-00142 
-00143         template <typename T> 
-00144         tmat2x4<T> operator- (
-00145                 tmat2x4<T> const & m1, 
-00146                 tmat2x4<T> const & m2);
-00147 
-00148         template <typename T> 
-00149         tmat2x4<T> operator* (
-00150                 tmat2x4<T> const & m, 
-00151                 typename tmat2x4<T>::value_type const & s);
-00152 
-00153         template <typename T> 
-00154         tmat2x4<T> operator* (
-00155                 typename tmat2x4<T>::value_type const & s, 
-00156                 tmat2x4<T> const & m);
-00157 
-00158         template <typename T>
-00159         typename tmat2x4<T>::col_type operator* (
-00160                 tmat2x4<T> const & m, 
-00161                 typename tmat2x4<T>::row_type const & v);
-00162 
-00163         template <typename T> 
-00164         typename tmat2x4<T>::row_type operator* (
-00165                 typename tmat2x4<T>::col_type const & v, 
-00166                 tmat2x4<T> const & m);
-00167 
-00168         template <typename T>
-00169         tmat2x4<T> operator* (
-00170                 tmat2x4<T> const & m1, 
-00171                 tmat2x4<T> const & m2);
-00172 
-00173         template <typename T> 
-00174         tmat2x4<T> operator/ (
-00175                 tmat2x4<T> const & m, 
-00176                 typename tmat2x4<T>::value_type const & s);
-00177 
-00178         template <typename T> 
-00179         tmat2x4<T> operator/ (
-00180                 typename tmat2x4<T>::value_type const & s, 
-00181                 tmat2x4<T> const & m);
-00182 
-00183         // Unary constant operators
-00184         template <typename T> 
-00185         tmat2x4<T> const operator-  (
-00186                 tmat2x4<T> const & m);
-00187 
-00188         template <typename T> 
-00189         tmat2x4<T> const operator-- (
-00190                 tmat2x4<T> const & m, 
-00191                 int);
-00192 
-00193         template <typename T> 
-00194         tmat2x4<T> const operator++ (
-00195                 tmat2x4<T> const & m, 
-00196                 int);
-00197 
-00198 } //namespace detail
-00199 
-00200 namespace core{
-00201 namespace type{
-00202 namespace precision
-00203 {
-00207         typedef detail::tmat2x4<lowp_float>             lowp_mat2x4;
-00211         typedef detail::tmat2x4<mediump_float>  mediump_mat2x4;
-00215         typedef detail::tmat2x4<highp_float>    highp_mat2x4;
-00216 }//namespace precision
-00217 }//namespace type
-00218 }//namespace core
-00219 }//namespace glm
-00220 
-00221 #ifndef GLM_EXTERNAL_TEMPLATE
-00222 #include "type_mat2x4.inl"
-00223 #endif
-00224 
-00225 #endif //glm_core_type_mat2x4
-
-
- - - diff --git a/doc/api-0.9.2/a00119_source.html b/doc/api-0.9.2/a00119_source.html deleted file mode 100644 index f4e8deca..00000000 --- a/doc/api-0.9.2/a00119_source.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - -type_mat3x2.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat3x2.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-08-05
-00005 // Updated : 2010-02-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat3x2.hpp
-00009 
-00010 #ifndef glm_core_type_mat3x2
-00011 #define glm_core_type_mat3x2
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat3x2
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec2<T> col_type;
-00041                 typedef tvec3<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat3x2<T> type;
-00046                 typedef tmat2x3<T> transpose_type;
-00047 
-00048         private:
-00049                 // Data
-00050                 col_type value[3];
-00051 
-00052         public:
-00053                 // Constructors
-00054                 GLM_FUNC_DECL tmat3x2();
-00055                 GLM_FUNC_DECL tmat3x2(tmat3x2 const & m);
-00056 
-00057                 GLM_FUNC_DECL explicit tmat3x2(
-00058                         ctor);
-00059                 GLM_FUNC_DECL explicit tmat3x2(
-00060                         value_type const & s);
-00061                 GLM_FUNC_DECL explicit tmat3x2(
-00062                         value_type const & x0, value_type const & y0,
-00063                         value_type const & x1, value_type const & y1,
-00064                         value_type const & x2, value_type const & y2);
-00065                 GLM_FUNC_DECL explicit tmat3x2(
-00066                         col_type const & v0, 
-00067                         col_type const & v1,
-00068                         col_type const & v2);
-00069 
-00071                 // Conversions
-00072                 template <typename U> 
-00073                 GLM_FUNC_DECL explicit tmat3x2(
-00074             U const & x);
-00075                         
-00076                 template 
-00077         <
-00078             typename X1, typename Y1, 
-00079             typename X2, typename Y2, 
-00080             typename X3, typename Y3
-00081         > 
-00082                 GLM_FUNC_DECL explicit tmat3x2(
-00083             X1 const & x1, Y1 const & y1, 
-00084             X2 const & x2, Y2 const & y2,
-00085             X3 const & x3, Y3 const & y3);
-00086                         
-00087                 template <typename V1, typename V2, typename V3> 
-00088                 GLM_FUNC_DECL explicit tmat3x2(
-00089             tvec2<V1> const & v1, 
-00090             tvec2<V2> const & v2,
-00091             tvec2<V3> const & v3);
-00092             
-00093                 // Matrix conversions
-00094                 template <typename U> 
-00095                 GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U> const & m);
-00096 
-00097                 GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T> const & x);
-00098                 GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T> const & x);
-00099                 GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T> const & x);
-00100                 GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T> const & x);
-00101                 GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T> const & x);
-00102                 GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T> const & x);
-00103                 GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T> const & x);
-00104                 GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T> const & x);
-00105 
-00106                 // Accesses
-00107                 GLM_FUNC_DECL col_type & operator[](size_type i);
-00108                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
-00109 
-00110                 // Unary updatable operators
-00111                 GLM_FUNC_DECL tmat3x2<T> & operator=  (tmat3x2<T> const & m);
-00112                 template <typename U> 
-00113                 GLM_FUNC_DECL tmat3x2<T> & operator=  (tmat3x2<U> const & m);
-00114                 template <typename U> 
-00115                 GLM_FUNC_DECL tmat3x2<T> & operator+= (U const & s);
-00116                 template <typename U> 
-00117                 GLM_FUNC_DECL tmat3x2<T> & operator+= (tmat3x2<U> const & m);
-00118                 template <typename U> 
-00119                 GLM_FUNC_DECL tmat3x2<T> & operator-= (U const & s);
-00120                 template <typename U> 
-00121                 GLM_FUNC_DECL tmat3x2<T> & operator-= (tmat3x2<U> const & m);
-00122                 template <typename U> 
-00123                 GLM_FUNC_DECL tmat3x2<T> & operator*= (U const & s);
-00124                 template <typename U> 
-00125                 GLM_FUNC_DECL tmat3x2<T> & operator*= (tmat3x2<U> const & m);
-00126                 template <typename U> 
-00127                 GLM_FUNC_DECL tmat3x2<T> & operator/= (U const & s);
-00128 
-00129                 GLM_FUNC_DECL tmat3x2<T> & operator++ ();
-00130                 GLM_FUNC_DECL tmat3x2<T> & operator-- ();
-00131         };
-00132 
-00133         // Binary operators
-00134         template <typename T> 
-00135         tmat3x2<T> operator+ (
-00136                 tmat3x2<T> const & m, 
-00137                 typename tmat3x2<T>::value_type const & s);
-00138             
-00139         template <typename T> 
-00140         tmat3x2<T> operator+ (
-00141                 tmat3x2<T> const & m1, 
-00142                 tmat3x2<T> const & m2);
-00143             
-00144         template <typename T> 
-00145         tmat3x2<T> operator- (
-00146                 tmat3x2<T> const & m, 
-00147                 typename tmat3x2<T>::value_type const & s);
-00148 
-00149         template <typename T> 
-00150         tmat3x2<T> operator- (
-00151                 tmat3x2<T> const & m1, 
-00152                 tmat3x2<T> const & m2);
-00153 
-00154         template <typename T> 
-00155         tmat3x2<T> operator* (
-00156                 tmat3x2<T> const & m, 
-00157                 typename tmat3x2<T>::value_type const & s);
-00158 
-00159         template <typename T> 
-00160         tmat3x2<T> operator* (
-00161                 typename tmat3x2<T>::value_type const & s, 
-00162                 tmat3x2<T> const & m);
-00163 
-00164         template <typename T>
-00165         typename tmat3x2<T>::col_type operator* (
-00166                 tmat3x2<T> const & m, 
-00167                 typename tmat3x2<T>::row_type const & v);
-00168 
-00169         template <typename T> 
-00170         typename tmat3x2<T>::row_type operator* (
-00171                 typename tmat3x2<T>::col_type const & v,
-00172                 tmat3x2<T> const & m);
-00173 
-00174         template <typename T>
-00175         tmat2x2<T> operator* (
-00176                 tmat3x2<T> const & m1, 
-00177                 tmat2x3<T> const & m2);
-00178 
-00179         template <typename T> 
-00180         tmat3x2<T> operator/ (
-00181                 tmat3x2<T> const & m, 
-00182                 typename tmat3x2<T>::value_type const & s);
-00183 
-00184         template <typename T> 
-00185         tmat3x2<T> operator/ (
-00186                 typename tmat3x2<T>::value_type const & s, 
-00187                 tmat3x2<T> const & m);
-00188 
-00189         // Unary constant operators
-00190         template <typename T> 
-00191         tmat3x2<T> const operator-  (
-00192                 tmat3x2<T> const & m);
-00193 
-00194         template <typename T> 
-00195         tmat3x2<T> const operator-- (
-00196                 tmat3x2<T> const & m, 
-00197                 int);
-00198 
-00199         template <typename T> 
-00200         tmat3x2<T> const operator++ (
-00201                 tmat3x2<T> const & m, 
-00202                 int);
-00203 
-00204 } //namespace detail
-00205 
-00206 namespace core{
-00207 namespace type{
-00208 namespace precision
-00209 {
-00213         typedef detail::tmat3x2<lowp_float>             lowp_mat3x2;
-00217         typedef detail::tmat3x2<mediump_float>  mediump_mat3x2;
-00221         typedef detail::tmat3x2<highp_float>    highp_mat3x2;
-00222 }//namespace precision
-00223 }//namespace type
-00224 }//namespace core
-00225 }//namespace glm
-00226 
-00227 #ifndef GLM_EXTERNAL_TEMPLATE
-00228 #include "type_mat3x2.inl"
-00229 #endif
-00230 
-00231 #endif //glm_core_type_mat3x2
-
-
- - - diff --git a/doc/api-0.9.2/a00120_source.html b/doc/api-0.9.2/a00120_source.html deleted file mode 100644 index 9cd4fb16..00000000 --- a/doc/api-0.9.2/a00120_source.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - -type_mat3x3.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat3x3.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-01-27
-00005 // Updated : 2010-02-03
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat3x3.hpp
-00009 
-00010 #ifndef glm_core_type_mat3x3
-00011 #define glm_core_type_mat3x3
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat3x3
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec3<T> col_type;
-00041                 typedef tvec3<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat3x3<T> type;
-00046                 typedef tmat3x3<T> transpose_type;
-00047 
-00048         public:
-00049                 // Implementation detail
-00050                 GLM_FUNC_DECL tmat3x3<T> _inverse() const;
-00051 
-00052         private:
-00053                 // Data
-00054                 col_type value[3];
-00055 
-00056         public:
-00057                 // Constructors
-00058                 GLM_FUNC_DECL tmat3x3();
-00059                 GLM_FUNC_DECL tmat3x3(tmat3x3 const & m);
-00060 
-00061                 GLM_FUNC_DECL explicit tmat3x3(
-00062                         ctor Null);
-00063                 GLM_FUNC_DECL explicit tmat3x3(
-00064                         value_type const & s);
-00065                 GLM_FUNC_DECL explicit tmat3x3(
-00066                         value_type const & x0, value_type const & y0, value_type const & z0,
-00067                         value_type const & x1, value_type const & y1, value_type const & z1,
-00068                         value_type const & x2, value_type const & y2, value_type const & z2);
-00069                 GLM_FUNC_DECL explicit tmat3x3(
-00070                         col_type const & v0, 
-00071                         col_type const & v1,
-00072                         col_type const & v2);
-00073 
-00075                 // Conversions
-00076                 template <typename U> 
-00077                 GLM_FUNC_DECL explicit tmat3x3(
-00078             U const & x);
-00079                         
-00080                 template 
-00081         <
-00082             typename X1, typename Y1, typename Z1, 
-00083             typename X2, typename Y2, typename Z2, 
-00084             typename X3, typename Y3, typename Z3
-00085         > 
-00086                 GLM_FUNC_DECL explicit tmat3x3(
-00087             X1 const & x1, Y1 const & y1, Z1 const & z1, 
-00088             X2 const & x2, Y2 const & y2, Z2 const & z2, 
-00089             X3 const & x3, Y3 const & y3, Z3 const & z3);
-00090                         
-00091                 template <typename V1, typename V2, typename V3> 
-00092                 GLM_FUNC_DECL explicit tmat3x3(
-00093             tvec3<V1> const & v1, 
-00094             tvec3<V2> const & v2,
-00095             tvec3<V3> const & v3);
-00096             
-00097                 // Matrix conversions
-00098                 template <typename U> 
-00099                 GLM_FUNC_DECL explicit tmat3x3(tmat3x3<U> const & m);
-00100 
-00101                 GLM_FUNC_DECL explicit tmat3x3(tmat2x2<T> const & x);
-00102                 GLM_FUNC_DECL explicit tmat3x3(tmat4x4<T> const & x);
-00103                 GLM_FUNC_DECL explicit tmat3x3(tmat2x3<T> const & x);
-00104                 GLM_FUNC_DECL explicit tmat3x3(tmat3x2<T> const & x);
-00105                 GLM_FUNC_DECL explicit tmat3x3(tmat2x4<T> const & x);
-00106                 GLM_FUNC_DECL explicit tmat3x3(tmat4x2<T> const & x);
-00107                 GLM_FUNC_DECL explicit tmat3x3(tmat3x4<T> const & x);
-00108                 GLM_FUNC_DECL explicit tmat3x3(tmat4x3<T> const & x);
-00109 
-00110                 // Accesses
-00111                 GLM_FUNC_DECL col_type & operator[](size_type i);
-00112                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
-00113 
-00114                 // Unary updatable operators
-00115                 GLM_FUNC_DECL tmat3x3<T>& operator=  (tmat3x3<T> const & m);
-00116                 template <typename U> 
-00117                 GLM_FUNC_DECL tmat3x3<T>& operator=  (tmat3x3<U> const & m);
-00118                 template <typename U> 
-00119                 GLM_FUNC_DECL tmat3x3<T>& operator+= (U const & s);
-00120                 template <typename U> 
-00121                 GLM_FUNC_DECL tmat3x3<T>& operator+= (tmat3x3<U> const & m);
-00122                 template <typename U> 
-00123                 GLM_FUNC_DECL tmat3x3<T>& operator-= (U const & s);
-00124                 template <typename U> 
-00125                 GLM_FUNC_DECL tmat3x3<T>& operator-= (tmat3x3<U> const & m);
-00126                 template <typename U> 
-00127                 GLM_FUNC_DECL tmat3x3<T>& operator*= (U const & s);
-00128                 template <typename U> 
-00129                 GLM_FUNC_DECL tmat3x3<T>& operator*= (tmat3x3<U> const & m);
-00130                 template <typename U> 
-00131                 GLM_FUNC_DECL tmat3x3<T>& operator/= (U const & s);
-00132                 template <typename U> 
-00133                 GLM_FUNC_DECL tmat3x3<T>& operator/= (tmat3x3<U> const & m);
-00134                 GLM_FUNC_DECL tmat3x3<T>& operator++ ();
-00135                 GLM_FUNC_DECL tmat3x3<T>& operator-- ();
-00136         };
-00137 
-00138         // Binary operators
-00139         template <typename T> 
-00140         tmat3x3<T> operator+ (
-00141                 tmat3x3<T> const & m, 
-00142                 typename tmat3x3<T>::value_type const & s);
-00143 
-00144         template <typename T> 
-00145         tmat3x3<T> operator+ (
-00146                 typename tmat3x3<T>::value_type const & s, 
-00147                 tmat3x3<T> const & m);
-00148 
-00149         template <typename T> 
-00150         tmat3x3<T> operator+ (
-00151                 tmat3x3<T> const & m1, 
-00152                 tmat3x3<T> const & m2);
-00153             
-00154         template <typename T> 
-00155         tmat3x3<T> operator- (
-00156                 tmat3x3<T> const & m, 
-00157                 typename tmat3x3<T>::value_type const & s);
-00158 
-00159         template <typename T> 
-00160         tmat3x3<T> operator- (
-00161                 typename tmat3x3<T>::value_type const & s, 
-00162                 tmat3x3<T> const & m);
-00163 
-00164         template <typename T> 
-00165         tmat3x3<T> operator- (
-00166                 tmat3x3<T> const & m1, 
-00167                 tmat3x3<T> const & m2);
-00168 
-00169         template <typename T> 
-00170         tmat3x3<T> operator* (
-00171                 tmat3x3<T> const & m, 
-00172                 typename tmat3x3<T>::value_type const & s);
-00173 
-00174         template <typename T> 
-00175         tmat3x3<T> operator* (
-00176                 typename tmat3x3<T>::value_type const & s, 
-00177                 tmat3x3<T> const & m);
-00178 
-00179         template <typename T> 
-00180         typename tmat3x3<T>::col_type operator* (
-00181                 tmat3x3<T> const & m, 
-00182                 typename tmat3x3<T>::row_type const & v);
-00183 
-00184         template <typename T> 
-00185         typename tmat3x3<T>::row_type operator* (
-00186                 typename tmat3x3<T>::col_type const & v, 
-00187                 tmat3x3<T> const & m);
-00188 
-00189         template <typename T> 
-00190         tmat3x3<T> operator* (
-00191                 tmat3x3<T> const & m1, 
-00192                 tmat3x3<T> const & m2);
-00193 
-00194         template <typename T> 
-00195         tmat3x3<T> operator/ (
-00196                 tmat3x3<T> const & m, 
-00197                 typename tmat3x3<T>::value_type const & s);
-00198 
-00199         template <typename T> 
-00200         tmat3x3<T> operator/ (
-00201                 typename tmat3x3<T>::value_type const & s, 
-00202                 tmat3x3<T> const & m);
-00203 
-00204         template <typename T> 
-00205         typename tmat3x3<T>::col_type operator/ (
-00206                 tmat3x3<T> const & m, 
-00207                 typename tmat3x3<T>::row_type const & v);
-00208 
-00209         template <typename T> 
-00210         typename tmat3x3<T>::row_type operator/ (
-00211                 typename tmat3x3<T>::col_type const & v, 
-00212                 tmat3x3<T> const & m);
-00213 
-00214         template <typename T> 
-00215         tmat3x3<T> operator/ (
-00216                 tmat3x3<T> const & m1, 
-00217                 tmat3x3<T> const & m2);
-00218 
-00219         // Unary constant operators
-00220         template <typename T> 
-00221         tmat3x3<T> const operator-  (
-00222                 tmat3x3<T> const & m);
-00223 
-00224         template <typename T> 
-00225         tmat3x3<T> const operator-- (
-00226                 tmat3x3<T> const & m, 
-00227                 int);
-00228 
-00229         template <typename T> 
-00230         tmat3x3<T> const operator++ (
-00231                 tmat3x3<T> const & m, 
-00232                 int);
-00233 
-00234 } //namespace detail
-00235 
-00236 namespace core{
-00237 namespace type{
-00238 namespace precision
-00239 {
-00244         typedef detail::tmat3x3<lowp_float>             lowp_mat3;
-00249         typedef detail::tmat3x3<mediump_float>  mediump_mat3;
-00254         typedef detail::tmat3x3<highp_float>    highp_mat3;
-00255 
-00260         typedef detail::tmat3x3<lowp_float>             lowp_mat3x3;
-00261 
-00266         typedef detail::tmat3x3<mediump_float>  mediump_mat3x3;
-00267 
-00272         typedef detail::tmat3x3<highp_float>    highp_mat3x3;
-00273 
-00274 }//namespace precision
-00275 }//namespace type
-00276 }//namespace core
-00277 }//namespace glm
-00278 
-00279 #ifndef GLM_EXTERNAL_TEMPLATE
-00280 #include "type_mat3x3.inl"
-00281 #endif
-00282 
-00283 #endif //glm_core_type_mat3x3
-
-
- - - diff --git a/doc/api-0.9.2/a00121_source.html b/doc/api-0.9.2/a00121_source.html deleted file mode 100644 index a18bde31..00000000 --- a/doc/api-0.9.2/a00121_source.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - -type_mat3x4.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat3x4.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-08-05
-00005 // Updated : 2010-02-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat3x4.hpp
-00009 
-00010 #ifndef glm_core_type_mat3x4
-00011 #define glm_core_type_mat3x4
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat3x4
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec4<T> col_type;
-00041                 typedef tvec3<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat3x4<T> type;
-00046                 typedef tmat4x3<T> transpose_type;
-00047 
-00048         private:
-00049                 // Data 
-00050                 col_type value[3];
-00051 
-00052         public:
-00053                 // Constructors
-00054                 GLM_FUNC_DECL tmat3x4();
-00055                 GLM_FUNC_DECL tmat3x4(tmat3x4 const & m);
-00056 
-00057                 GLM_FUNC_DECL explicit tmat3x4(
-00058                         ctor Null);
-00059                 GLM_FUNC_DECL explicit tmat3x4(
-00060                         value_type const & s);
-00061                 GLM_FUNC_DECL explicit tmat3x4(
-00062                         value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
-00063                         value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1,
-00064                         value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2);
-00065                 GLM_FUNC_DECL explicit tmat3x4(
-00066                         col_type const & v0, 
-00067                         col_type const & v1,
-00068                         col_type const & v2);
-00069 
-00071                 // Conversions
-00072                 template <typename U> 
-00073                 GLM_FUNC_DECL explicit tmat3x4(
-00074             U const & x);
-00075                         
-00076                 template 
-00077         <
-00078             typename X1, typename Y1, typename Z1, typename W1, 
-00079             typename X2, typename Y2, typename Z2, typename W2, 
-00080             typename X3, typename Y3, typename Z3, typename W3 
-00081         > 
-00082                 GLM_FUNC_DECL explicit tmat3x4(
-00083             X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, 
-00084             X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, 
-00085             X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3);
-00086                         
-00087                 template <typename V1, typename V2, typename V3> 
-00088                 GLM_FUNC_DECL explicit tmat3x4(
-00089             tvec4<V1> const & v1, 
-00090             tvec4<V2> const & v2,
-00091             tvec4<V3> const & v3);
-00092             
-00093                 // Matrix conversion
-00094                 template <typename U> 
-00095                 GLM_FUNC_DECL explicit tmat3x4(tmat3x4<U> const & m);
-00096 
-00097                 GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T> const & x);
-00098                 GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T> const & x);
-00099                 GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T> const & x);
-00100                 GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T> const & x);
-00101                 GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T> const & x);
-00102                 GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T> const & x);
-00103                 GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T> const & x);
-00104                 GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T> const & x);
-00105 
-00106                 // Accesses
-00107                 col_type & operator[](size_type i);
-00108                 col_type const & operator[](size_type i) const;
-00109 
-00110                 // Unary updatable operators
-00111                 GLM_FUNC_DECL tmat3x4<T> & operator=  (tmat3x4<T> const & m);
-00112                 template <typename U> 
-00113                 GLM_FUNC_DECL tmat3x4<T> & operator=  (tmat3x4<U> const & m);
-00114                 template <typename U> 
-00115                 GLM_FUNC_DECL tmat3x4<T> & operator+= (U const & s);
-00116                 template <typename U> 
-00117                 GLM_FUNC_DECL tmat3x4<T> & operator+= (tmat3x4<U> const & m);
-00118                 template <typename U> 
-00119                 GLM_FUNC_DECL tmat3x4<T> & operator-= (U const & s);
-00120                 template <typename U> 
-00121                 GLM_FUNC_DECL tmat3x4<T> & operator-= (tmat3x4<U> const & m);
-00122                 template <typename U> 
-00123                 GLM_FUNC_DECL tmat3x4<T> & operator*= (U const & s);
-00124                 template <typename U> 
-00125                 GLM_FUNC_DECL tmat3x4<T> & operator*= (tmat3x4<U> const & m);
-00126                 template <typename U> 
-00127                 GLM_FUNC_DECL tmat3x4<T> & operator/= (U const & s);
-00128 
-00129                 GLM_FUNC_DECL tmat3x4<T> & operator++ ();
-00130                 GLM_FUNC_DECL tmat3x4<T> & operator-- ();
-00131         };
-00132 
-00133         // Binary operators
-00134         template <typename T> 
-00135         tmat3x4<T> operator+ (
-00136                 tmat3x4<T> const & m, 
-00137                 typename tmat3x4<T>::value_type const & s);
-00138             
-00139         template <typename T> 
-00140         tmat3x4<T> operator+ (
-00141                 tmat3x4<T> const & m1, 
-00142                 tmat3x4<T> const & m2);
-00143             
-00144         template <typename T> 
-00145         tmat3x4<T> operator- (
-00146                 tmat3x4<T> const & m, 
-00147                 typename tmat3x4<T>::value_type const & s);
-00148 
-00149         template <typename T> 
-00150         tmat3x4<T> operator- (
-00151                 tmat3x4<T> const & m1, 
-00152                 tmat3x4<T> const & m2);
-00153 
-00154         template <typename T> 
-00155         tmat3x4<T> operator* (
-00156                 tmat3x4<T> const & m, 
-00157                 typename tmat3x4<T>::value_type const & s);
-00158 
-00159         template <typename T> 
-00160         tmat3x4<T> operator* (
-00161                 typename tmat3x4<T>::value_type const & s, 
-00162                 tmat3x4<T> const & m);
-00163 
-00164         template <typename T>
-00165         typename tmat3x4<T>::col_type operator* (
-00166                 tmat3x4<T> const & m, 
-00167                 typename tmat3x4<T>::row_type const & v);
-00168 
-00169         template <typename T> 
-00170         typename tmat3x4<T>::row_type operator* (
-00171                 typename tmat3x4<T>::col_type const & v, 
-00172                 tmat3x4<T> const & m);
-00173 
-00174         template <typename T>
-00175         tmat4x4<T> operator* (
-00176                 tmat3x4<T> const & m1, 
-00177                 tmat4x3<T> const & m2);
-00178 
-00179         template <typename T> 
-00180         tmat3x4<T> operator/ (
-00181                 tmat3x4<T> const & m, 
-00182                 typename tmat3x4<T>::value_type const & s);
-00183 
-00184         template <typename T> 
-00185         tmat3x4<T> operator/ (
-00186                 typename tmat3x4<T>::value_type const & s, 
-00187                 tmat3x4<T> const & m);
-00188 
-00189         // Unary constant operators
-00190         template <typename T> 
-00191         tmat3x4<T> const operator-  (
-00192                 tmat3x4<T> const & m);
-00193 
-00194         template <typename T> 
-00195         tmat3x4<T> const operator-- (
-00196                 tmat3x4<T> const & m, 
-00197                 int);
-00198 
-00199         template <typename T> 
-00200         tmat3x4<T> const operator++ (
-00201                 tmat3x4<T> const & m, 
-00202                 int);
-00203 
-00204 }//namespace detail
-00205 
-00206 namespace core{
-00207 namespace type{
-00208 namespace precision
-00209 {
-00213         typedef detail::tmat3x4<lowp_float>             lowp_mat3x4;
-00217         typedef detail::tmat3x4<mediump_float>  mediump_mat3x4;
-00221         typedef detail::tmat3x4<highp_float>    highp_mat3x4;
-00222 
-00223 }//namespace precision
-00224 }//namespace type
-00225 }//namespace core
-00226 }//namespace glm
-00227 
-00228 #ifndef GLM_EXTERNAL_TEMPLATE
-00229 #include "type_mat3x4.inl"
-00230 #endif
-00231 
-00232 #endif //glm_core_type_mat3x4
-
-
- - - diff --git a/doc/api-0.9.2/a00122_source.html b/doc/api-0.9.2/a00122_source.html deleted file mode 100644 index e81beb96..00000000 --- a/doc/api-0.9.2/a00122_source.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - -type_mat4x2.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat4x2.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-10-01
-00005 // Updated : 2010-02-11
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat4x2.hpp
-00009 
-00010 #ifndef glm_core_type_mat4x2
-00011 #define glm_core_type_mat4x2
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat4x2
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec2<T> col_type;
-00041                 typedef tvec4<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat4x2<T> type;
-00046                 typedef tmat2x4<T> transpose_type;
-00047 
-00048         private:
-00049                 // Data 
-00050                 col_type value[4];
-00051 
-00052         public:
-00053                 // Constructors
-00054                 GLM_FUNC_DECL tmat4x2();
-00055                 GLM_FUNC_DECL tmat4x2(tmat4x2 const & m);
-00056 
-00057                 GLM_FUNC_DECL explicit tmat4x2(
-00058                         ctor Null);
-00059                 GLM_FUNC_DECL explicit tmat4x2(
-00060                         value_type const & x);
-00061                 GLM_FUNC_DECL explicit tmat4x2(
-00062                         value_type const & x0, value_type const & y0,
-00063                         value_type const & x1, value_type const & y1,
-00064                         value_type const & x2, value_type const & y2,
-00065                         value_type const & x3, value_type const & y3);
-00066                 GLM_FUNC_DECL explicit tmat4x2(
-00067                         col_type const & v0, 
-00068                         col_type const & v1,
-00069                         col_type const & v2,
-00070                         col_type const & v3);
-00071             
-00073                 // Conversions
-00074                 template <typename U> 
-00075                 GLM_FUNC_DECL explicit tmat4x2(
-00076             U const & x);
-00077                         
-00078                 template 
-00079         <
-00080             typename X1, typename Y1, 
-00081             typename X2, typename Y2, 
-00082             typename X3, typename Y3,
-00083             typename X4, typename Y4
-00084         > 
-00085                 GLM_FUNC_DECL explicit tmat4x2(
-00086             X1 const & x1, Y1 const & y1, 
-00087             X2 const & x2, Y2 const & y2,
-00088             X3 const & x3, Y3 const & y3,
-00089             X4 const & x4, Y4 const & y4);
-00090                         
-00091                 template <typename V1, typename V2, typename V3, typename V4> 
-00092                 GLM_FUNC_DECL explicit tmat4x2(
-00093             tvec2<V1> const & v1, 
-00094             tvec2<V2> const & v2,
-00095             tvec2<V3> const & v3,
-00096             tvec2<V4> const & v4);
-00097             
-00098                 // Matrix conversions
-00099                 template <typename U> 
-00100                 GLM_FUNC_DECL explicit tmat4x2(tmat4x2<U> const & m);
-00101                         
-00102                 GLM_FUNC_DECL explicit tmat4x2(tmat2x2<T> const & x);
-00103                 GLM_FUNC_DECL explicit tmat4x2(tmat3x3<T> const & x);
-00104                 GLM_FUNC_DECL explicit tmat4x2(tmat4x4<T> const & x);
-00105                 GLM_FUNC_DECL explicit tmat4x2(tmat2x3<T> const & x);
-00106                 GLM_FUNC_DECL explicit tmat4x2(tmat3x2<T> const & x);
-00107                 GLM_FUNC_DECL explicit tmat4x2(tmat2x4<T> const & x);
-00108                 GLM_FUNC_DECL explicit tmat4x2(tmat4x3<T> const & x);
-00109                 GLM_FUNC_DECL explicit tmat4x2(tmat3x4<T> const & x);
-00110 
-00111                 // Accesses
-00112                 GLM_FUNC_DECL col_type & operator[](size_type i);
-00113                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
-00114 
-00115                 // Unary updatable operators
-00116                 GLM_FUNC_DECL tmat4x2<T>& operator=  (tmat4x2<T> const & m);
-00117                 template <typename U> 
-00118                 GLM_FUNC_DECL tmat4x2<T>& operator=  (tmat4x2<U> const & m);
-00119                 template <typename U> 
-00120                 GLM_FUNC_DECL tmat4x2<T>& operator+= (U const & s);
-00121                 template <typename U> 
-00122                 GLM_FUNC_DECL tmat4x2<T>& operator+= (tmat4x2<U> const & m);
-00123                 template <typename U> 
-00124                 GLM_FUNC_DECL tmat4x2<T>& operator-= (U const & s);
-00125                 template <typename U> 
-00126                 GLM_FUNC_DECL tmat4x2<T>& operator-= (tmat4x2<U> const & m);
-00127                 template <typename U> 
-00128                 GLM_FUNC_DECL tmat4x2<T>& operator*= (U const & s);
-00129                 template <typename U> 
-00130                 GLM_FUNC_DECL tmat4x2<T>& operator*= (tmat4x2<U> const & m);
-00131                 template <typename U> 
-00132                 GLM_FUNC_DECL tmat4x2<T>& operator/= (U const & s);
-00133 
-00134                 GLM_FUNC_DECL tmat4x2<T>& operator++ ();
-00135                 GLM_FUNC_DECL tmat4x2<T>& operator-- ();
-00136         };
-00137 
-00138         // Binary operators
-00139         template <typename T> 
-00140         tmat4x2<T> operator+ (
-00141                 tmat4x2<T> const & m, 
-00142                 typename tmat4x2<T>::value_type const & s);
-00143             
-00144         template <typename T> 
-00145         tmat4x2<T> operator+ (
-00146                 tmat4x2<T> const & m1, 
-00147                 tmat4x2<T> const & m2);
-00148             
-00149         template <typename T> 
-00150         tmat4x2<T> operator- (
-00151                 tmat4x2<T> const & m, 
-00152                 typename tmat4x2<T>::value_type const & s);
-00153 
-00154         template <typename T> 
-00155         tmat4x2<T> operator- (
-00156                 tmat4x2<T> const & m1, 
-00157                 tmat4x2<T> const & m2);
-00158 
-00159         template <typename T> 
-00160         tmat4x2<T> operator* (
-00161                 tmat4x2<T> const & m, 
-00162                 typename tmat4x2<T>::value_type const & s);
-00163 
-00164         template <typename T> 
-00165         tmat4x2<T> operator* (
-00166                 typename tmat4x2<T>::value_type const & s, 
-00167                 tmat4x2<T> const & m);
-00168 
-00169         template <typename T>
-00170         typename tmat4x2<T>::col_type operator* (
-00171                 tmat4x2<T> const & m, 
-00172                 typename tmat4x2<T>::row_type const & v);
-00173 
-00174         template <typename T> 
-00175         typename tmat4x2<T>::row_type operator* (
-00176                 typename tmat4x2<T>::col_type const & v, 
-00177                 tmat4x2<T> const & m);
-00178 
-00179         template <typename T> 
-00180         tmat2x2<T> operator* (
-00181                 tmat4x2<T> const & m1, 
-00182                 tmat2x4<T> const & m2);
-00183 
-00184         template <typename T> 
-00185         tmat4x2<T> operator/ (
-00186                 tmat4x2<T> const & m, 
-00187                 typename tmat4x2<T>::value_type const & s);
-00188 
-00189         template <typename T> 
-00190         tmat4x2<T> operator/ (
-00191                 typename tmat4x2<T>::value_type const & s, 
-00192                 tmat4x2<T> const & m);
-00193 
-00194         // Unary constant operators
-00195         template <typename T> 
-00196         tmat4x2<T> const operator-  (
-00197                 tmat4x2<T> const & m);
-00198 
-00199         template <typename T> 
-00200         tmat4x2<T> const operator-- (
-00201                 tmat4x2<T> const & m, 
-00202                 int);
-00203 
-00204         template <typename T> 
-00205         tmat4x2<T> const operator++ (
-00206                 tmat4x2<T> const & m, 
-00207                 int);
-00208 
-00209 } //namespace detail
-00210 
-00211 namespace core{
-00212 namespace type{
-00213 namespace precision
-00214 {
-00219         typedef detail::tmat4x2<lowp_float>             lowp_mat4x2;
-00220 
-00225         typedef detail::tmat4x2<mediump_float>  mediump_mat4x2;
-00226 
-00231         typedef detail::tmat4x2<highp_float>    highp_mat4x2;
-00232 
-00233 }//namespace precision
-00234 }//namespace type
-00235 }//namespace core
-00236 }//namespace glm
-00237 
-00238 #ifndef GLM_EXTERNAL_TEMPLATE
-00239 #include "type_mat4x2.inl"
-00240 #endif
-00241 
-00242 #endif //glm_core_type_mat4x2
-
-
- - - diff --git a/doc/api-0.9.2/a00123_source.html b/doc/api-0.9.2/a00123_source.html deleted file mode 100644 index ee69d94a..00000000 --- a/doc/api-0.9.2/a00123_source.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - -type_mat4x3.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat4x3.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-08-04
-00005 // Updated : 2010-02-11
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat4x3.hpp
-00009 
-00010 #ifndef glm_core_type_mat4x3
-00011 #define glm_core_type_mat4x3
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat4x3
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec3<T> col_type;
-00041                 typedef tvec4<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat4x3<T> type;
-00046                 typedef tmat3x4<T> transpose_type;
-00047 
-00048         private:
-00049                 // Data 
-00050                 col_type value[4];
-00051 
-00052         public:
-00053                 // Constructors
-00054                 GLM_FUNC_DECL tmat4x3();
-00055                 GLM_FUNC_DECL tmat4x3(tmat4x3 const & m);
-00056 
-00057                 GLM_FUNC_DECL explicit tmat4x3(
-00058                         ctor Null);
-00059                 GLM_FUNC_DECL explicit tmat4x3(
-00060                         value_type const & x);
-00061                 GLM_FUNC_DECL explicit tmat4x3(
-00062                         value_type const & x0, value_type const & y0, value_type const & z0,
-00063                         value_type const & x1, value_type const & y1, value_type const & z1,
-00064                         value_type const & x2, value_type const & y2, value_type const & z2,
-00065                         value_type const & x3, value_type const & y3, value_type const & z3);
-00066                 GLM_FUNC_DECL explicit tmat4x3(
-00067                         col_type const & v0, 
-00068                         col_type const & v1,
-00069                         col_type const & v2,
-00070             col_type const & v3);
-00071             
-00073                 // Conversions
-00074                 template <typename U> 
-00075                 GLM_FUNC_DECL explicit tmat4x3(
-00076             U const & x);
-00077                         
-00078                 template <
-00079             typename X1, typename Y1, typename Z1, 
-00080             typename X2, typename Y2, typename Z2, 
-00081             typename X3, typename Y3, typename Z3, 
-00082             typename X4, typename Y4, typename Z4> 
-00083                 GLM_FUNC_DECL explicit tmat4x3(
-00084             X1 const & x1, Y1 const & y1, Z1 const & z1, 
-00085             X2 const & x2, Y2 const & y2, Z2 const & z2, 
-00086             X3 const & x3, Y3 const & y3, Z3 const & z3, 
-00087             X4 const & x4, Y4 const & y4, Z4 const & z4);
-00088                         
-00089                 template <typename V1, typename V2, typename V3, typename V4> 
-00090                 GLM_FUNC_DECL explicit tmat4x3(
-00091             tvec3<V1> const & v1, 
-00092             tvec3<V2> const & v2,
-00093             tvec3<V3> const & v3,
-00094             tvec3<V4> const & v4);
-00095             
-00096                 // Matrix conversions
-00097                 template <typename U> 
-00098                 GLM_FUNC_DECL explicit tmat4x3(tmat4x3<U> const & m);
-00099                         
-00100                 GLM_FUNC_DECL explicit tmat4x3(tmat2x2<T> const & x);
-00101                 GLM_FUNC_DECL explicit tmat4x3(tmat3x3<T> const & x);
-00102                 GLM_FUNC_DECL explicit tmat4x3(tmat4x4<T> const & x);
-00103                 GLM_FUNC_DECL explicit tmat4x3(tmat2x3<T> const & x);
-00104                 GLM_FUNC_DECL explicit tmat4x3(tmat3x2<T> const & x);
-00105                 GLM_FUNC_DECL explicit tmat4x3(tmat2x4<T> const & x);
-00106                 GLM_FUNC_DECL explicit tmat4x3(tmat4x2<T> const & x);
-00107                 GLM_FUNC_DECL explicit tmat4x3(tmat3x4<T> const & x);
-00108 
-00109                 // Accesses
-00110                 col_type & operator[](size_type i);
-00111                 col_type const & operator[](size_type i) const;
-00112 
-00113                 // Unary updatable operators
-00114                 GLM_FUNC_DECL tmat4x3<T> & operator=  (tmat4x3<T> const & m);
-00115                 template <typename U> 
-00116                 GLM_FUNC_DECL tmat4x3<T> & operator=  (tmat4x3<U> const & m);
-00117                 template <typename U> 
-00118                 GLM_FUNC_DECL tmat4x3<T> & operator+= (U const & s);
-00119                 template <typename U> 
-00120                 GLM_FUNC_DECL tmat4x3<T> & operator+= (tmat4x3<U> const & m);
-00121                 template <typename U> 
-00122                 GLM_FUNC_DECL tmat4x3<T> & operator-= (U const & s);
-00123                 template <typename U> 
-00124                 GLM_FUNC_DECL tmat4x3<T> & operator-= (tmat4x3<U> const & m);
-00125                 template <typename U> 
-00126                 GLM_FUNC_DECL tmat4x3<T> & operator*= (U const & s);
-00127                 template <typename U> 
-00128                 GLM_FUNC_DECL tmat4x3<T> & operator*= (tmat4x3<U> const & m);
-00129                 template <typename U> 
-00130                 GLM_FUNC_DECL tmat4x3<T> & operator/= (U const & s);
-00131 
-00132                 GLM_FUNC_DECL tmat4x3<T> & operator++ ();
-00133                 GLM_FUNC_DECL tmat4x3<T> & operator-- ();
-00134         };
-00135 
-00136         // Binary operators
-00137         template <typename T> 
-00138         tmat4x3<T> operator+ (
-00139                 tmat4x3<T> const & m, 
-00140                 typename tmat4x3<T>::value_type const & s);
-00141             
-00142         template <typename T> 
-00143         tmat4x3<T> operator+ (
-00144                 tmat4x3<T> const & m1, 
-00145                 tmat4x3<T> const & m2);
-00146             
-00147         template <typename T> 
-00148         tmat4x3<T> operator- (
-00149                 tmat4x3<T> const & m, 
-00150                 typename tmat4x3<T>::value_type const & s);
-00151 
-00152         template <typename T> 
-00153         tmat4x3<T> operator- (
-00154                 tmat4x3<T> const & m1, 
-00155                 tmat4x3<T> const & m2);
-00156 
-00157         template <typename T> 
-00158         tmat4x3<T> operator* (
-00159                 tmat4x3<T> const & m, 
-00160                 typename tmat4x3<T>::value_type const & s);
-00161 
-00162         template <typename T> 
-00163         tmat4x3<T> operator* (
-00164                 typename tmat4x3<T>::value_type const & s, 
-00165                 tmat4x3<T> const & m);
-00166 
-00167         template <typename T>
-00168         typename tmat4x3<T>::col_type operator* (
-00169                 tmat4x3<T> const & m, 
-00170                 typename tmat4x3<T>::row_type const & v);
-00171 
-00172         template <typename T> 
-00173         typename tmat4x3<T>::row_type operator* (
-00174                 typename tmat4x3<T>::col_type const & v, 
-00175                 tmat4x3<T> const & m);
-00176 
-00177         template <typename T> 
-00178         tmat3x3<T> operator* (
-00179                 tmat4x3<T> const & m1, 
-00180                 tmat3x4<T> const & m2);
-00181 
-00182         template <typename T> 
-00183         tmat4x3<T> operator/ (
-00184                 tmat4x3<T> const & m, 
-00185                 typename tmat4x3<T>::value_type const & s);
-00186 
-00187         template <typename T> 
-00188         tmat4x3<T> operator/ (
-00189                 typename tmat4x3<T>::value_type const & s, 
-00190                 tmat4x3<T> const & m);
-00191 
-00192         // Unary constant operators
-00193         template <typename T> 
-00194         tmat4x3<T> const operator- (
-00195                 tmat4x3<T> const & m);
-00196 
-00197         template <typename T> 
-00198         tmat4x3<T> const operator-- (
-00199                 tmat4x3<T> const & m, 
-00200                 int);
-00201 
-00202         template <typename T> 
-00203         tmat4x3<T> const operator++ (
-00204                 tmat4x3<T> const & m, 
-00205                 int);
-00206 
-00207 }//namespace detail
-00208 
-00209 namespace core{
-00210 namespace type{
-00211 namespace precision
-00212 {
-00217         typedef detail::tmat4x3<lowp_float>             lowp_mat4x3;
-00218 
-00223         typedef detail::tmat4x3<mediump_float>  mediump_mat4x3;
-00224 
-00229         typedef detail::tmat4x3<highp_float>    highp_mat4x3;
-00230 
-00231 }//namespace precision
-00232 }//namespace type
-00233 }//namespace core
-00234 }//namespace glm
-00235 
-00236 #ifndef GLM_EXTERNAL_TEMPLATE
-00237 #include "type_mat4x3.inl"
-00238 #endif //GLM_EXTERNAL_TEMPLATE
-00239 
-00240 #endif//glm_core_type_mat4x3
-
-
- - - diff --git a/doc/api-0.9.2/a00124_source.html b/doc/api-0.9.2/a00124_source.html deleted file mode 100644 index 546870e2..00000000 --- a/doc/api-0.9.2/a00124_source.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - -type_mat4x4.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_mat4x4.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-01-27
-00005 // Updated : 2011-06-02
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_mat4x4.hpp
-00009 
-00010 #ifndef glm_core_type_mat4x4
-00011 #define glm_core_type_mat4x4
-00012 
-00013 #include "type_mat.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         template <typename T> struct tvec1;
-00019         template <typename T> struct tvec2;
-00020         template <typename T> struct tvec3;
-00021         template <typename T> struct tvec4;
-00022         template <typename T> struct tmat2x2;
-00023         template <typename T> struct tmat2x3;
-00024         template <typename T> struct tmat2x4;
-00025         template <typename T> struct tmat3x2;
-00026         template <typename T> struct tmat3x3;
-00027         template <typename T> struct tmat3x4;
-00028         template <typename T> struct tmat4x2;
-00029         template <typename T> struct tmat4x3;
-00030         template <typename T> struct tmat4x4;
-00031 
-00034         template <typename T> 
-00035         struct tmat4x4
-00036         {
-00037                 enum ctor{null};
-00038                 typedef T value_type;
-00039                 typedef std::size_t size_type;
-00040                 typedef tvec4<T> col_type;
-00041                 typedef tvec4<T> row_type;
-00042                 static GLM_FUNC_DECL size_type col_size();
-00043                 static GLM_FUNC_DECL size_type row_size();
-00044 
-00045                 typedef tmat4x4<T> type;
-00046                 typedef tmat4x4<T> transpose_type;
-00047 
-00048         public:
-00049                 // Implementation detail
-00050                 GLM_FUNC_DECL tmat4x4<T> _inverse() const;
-00051 
-00052         private:
-00053                 // Data 
-00054                 col_type value[4];
-00055 
-00056         public:
-00057                 // Constructors
-00058                 GLM_FUNC_DECL tmat4x4();
-00059                 GLM_FUNC_DECL tmat4x4(tmat4x4 const & m);
-00060 
-00061                 GLM_FUNC_DECL explicit tmat4x4(
-00062                         ctor Null);
-00063                 GLM_FUNC_DECL explicit tmat4x4(
-00064                         value_type const & x);
-00065                 GLM_FUNC_DECL explicit tmat4x4(
-00066                         value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
-00067                         value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1,
-00068                         value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2,
-00069                         value_type const & x3, value_type const & y3, value_type const & z3, value_type const & w3);
-00070                 GLM_FUNC_DECL explicit tmat4x4(
-00071                         col_type const & v0, 
-00072                         col_type const & v1,
-00073                         col_type const & v2,
-00074                         col_type const & v3);
-00075 
-00077                 // Conversions
-00078                 template <typename U> 
-00079                 GLM_FUNC_DECL explicit tmat4x4(
-00080             U const & x);
-00081                         
-00082                 template <
-00083             typename X1, typename Y1, typename Z1, typename W1, 
-00084             typename X2, typename Y2, typename Z2, typename W2, 
-00085             typename X3, typename Y3, typename Z3, typename W3, 
-00086             typename X4, typename Y4, typename Z4, typename W4> 
-00087                 GLM_FUNC_DECL explicit tmat4x4(
-00088             X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, 
-00089             X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, 
-00090             X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3, 
-00091             X4 const & x4, Y4 const & y4, Z4 const & z4, W4 const & w4);
-00092                         
-00093                 template <typename V1, typename V2, typename V3, typename V4> 
-00094                 GLM_FUNC_DECL explicit tmat4x4(
-00095             tvec4<V1> const & v1, 
-00096             tvec4<V2> const & v2,
-00097             tvec4<V3> const & v3,
-00098             tvec4<V4> const & v4);
-00099             
-00100                 // Matrix conversions
-00101                 template <typename U> 
-00102                 GLM_FUNC_DECL explicit tmat4x4(tmat4x4<U> const & m);
-00103 
-00104                 GLM_FUNC_DECL explicit tmat4x4(tmat2x2<T> const & x);
-00105                 GLM_FUNC_DECL explicit tmat4x4(tmat3x3<T> const & x);
-00106                 GLM_FUNC_DECL explicit tmat4x4(tmat2x3<T> const & x);
-00107                 GLM_FUNC_DECL explicit tmat4x4(tmat3x2<T> const & x);
-00108                 GLM_FUNC_DECL explicit tmat4x4(tmat2x4<T> const & x);
-00109                 GLM_FUNC_DECL explicit tmat4x4(tmat4x2<T> const & x);
-00110                 GLM_FUNC_DECL explicit tmat4x4(tmat3x4<T> const & x);
-00111                 GLM_FUNC_DECL explicit tmat4x4(tmat4x3<T> const & x);
-00112 
-00113                 // Accesses
-00114                 GLM_FUNC_DECL col_type & operator[](size_type i);
-00115                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
-00116 
-00117                 // Unary updatable operators
-00118                 GLM_FUNC_DECL tmat4x4<T> & operator=  (tmat4x4<T> const & m);
-00119                 template <typename U>
-00120                 GLM_FUNC_DECL tmat4x4<T> & operator=  (tmat4x4<U> const & m);
-00121                 template <typename U>
-00122                 GLM_FUNC_DECL tmat4x4<T> & operator+= (U const & s);
-00123                 template <typename U>
-00124                 GLM_FUNC_DECL tmat4x4<T> & operator+= (tmat4x4<U> const & m);
-00125                 template <typename U>
-00126                 GLM_FUNC_DECL tmat4x4<T> & operator-= (U const & s);
-00127                 template <typename U>
-00128                 GLM_FUNC_DECL tmat4x4<T> & operator-= (tmat4x4<U> const & m);
-00129                 template <typename U>
-00130                 GLM_FUNC_DECL tmat4x4<T> & operator*= (U const & s);
-00131                 template <typename U>
-00132                 GLM_FUNC_DECL tmat4x4<T> & operator*= (tmat4x4<U> const & m);
-00133                 template <typename U>
-00134                 GLM_FUNC_DECL tmat4x4<T> & operator/= (U const & s);
-00135                 template <typename U>
-00136                 GLM_FUNC_DECL tmat4x4<T> & operator/= (tmat4x4<U> const & m);
-00137                 GLM_FUNC_DECL tmat4x4<T> & operator++ ();
-00138                 GLM_FUNC_DECL tmat4x4<T> & operator-- ();
-00139         };
-00140 
-00141         // Binary operators
-00142         template <typename T> 
-00143         tmat4x4<T> operator+ (
-00144                 tmat4x4<T> const & m, 
-00145                 typename tmat4x4<T>::value_type const & s);
-00146 
-00147         template <typename T> 
-00148         tmat4x4<T> operator+ (
-00149                 typename tmat4x4<T>::value_type const & s, 
-00150                 tmat4x4<T> const & m);
-00151 
-00152         template <typename T> 
-00153         tmat4x4<T> operator+ (
-00154                 tmat4x4<T> const & m1, 
-00155                 tmat4x4<T> const & m2);
-00156             
-00157         template <typename T> 
-00158         tmat4x4<T> operator- (
-00159                 tmat4x4<T> const & m, 
-00160                 typename tmat4x4<T>::value_type const & s);
-00161 
-00162         template <typename T> 
-00163         tmat4x4<T> operator- (
-00164                 typename tmat4x4<T>::value_type const & s, 
-00165                 tmat4x4<T> const & m);
-00166 
-00167         template <typename T> 
-00168         tmat4x4<T> operator- (
-00169                 tmat4x4<T> const & m1, 
-00170                 tmat4x4<T> const & m2);
-00171 
-00172         template <typename T> 
-00173         tmat4x4<T> operator* (
-00174                 tmat4x4<T> const & m, 
-00175                 typename tmat4x4<T>::value_type const & s);
-00176 
-00177         template <typename T> 
-00178         tmat4x4<T> operator* (
-00179                 typename tmat4x4<T>::value_type const & s, 
-00180                 tmat4x4<T> const & m);
-00181 
-00182         template <typename T> 
-00183         typename tmat4x4<T>::col_type operator* (
-00184                 tmat4x4<T> const & m, 
-00185                 typename tmat4x4<T>::row_type const & v);
-00186 
-00187         template <typename T> 
-00188         typename tmat4x4<T>::row_type operator* (
-00189                 typename tmat4x4<T>::col_type const & v, 
-00190                 tmat4x4<T> const & m);
-00191 
-00192         template <typename T> 
-00193         tmat4x4<T> operator* (
-00194                 tmat4x4<T> const & m1, 
-00195                 tmat4x4<T> const & m2);
-00196 
-00197         template <typename T> 
-00198         tmat4x4<T> operator/ (
-00199                 tmat4x4<T> const & m, 
-00200                 typename tmat4x4<T>::value_type const & s);
-00201 
-00202         template <typename T> 
-00203         tmat4x4<T> operator/ (
-00204                 typename tmat4x4<T>::value_type const & s, 
-00205                 tmat4x4<T> const & m);
-00206 
-00207         template <typename T> 
-00208         typename tmat4x4<T>::col_type operator/ (
-00209                 tmat4x4<T> const & m, 
-00210                 typename tmat4x4<T>::row_type const & v);
-00211 
-00212         template <typename T> 
-00213         typename tmat4x4<T>::row_type operator/ (
-00214                 typename tmat4x4<T>::col_type & v, 
-00215                 tmat4x4<T> const & m);
-00216 
-00217         template <typename T> 
-00218         tmat4x4<T> operator/ (
-00219                 tmat4x4<T> const & m1, 
-00220                 tmat4x4<T> const & m2);
-00221 
-00222         // Unary constant operators
-00223         template <typename T> 
-00224         tmat4x4<T> const operator-  (
-00225                 tmat4x4<T> const & m);
-00226 
-00227         template <typename T> 
-00228         tmat4x4<T> const operator-- (
-00229                 tmat4x4<T> const & m, int);
-00230 
-00231         template <typename T> 
-00232         tmat4x4<T> const operator++ (
-00233                 tmat4x4<T> const & m, int);
-00234 
-00235 } //namespace detail
-00236 
-00237 namespace core{
-00238 namespace type{
-00239 namespace precision
-00240 {
-00245         typedef detail::tmat4x4<lowp_float>             lowp_mat4;
-00246 
-00251         typedef detail::tmat4x4<mediump_float>  mediump_mat4;
-00252 
-00257         typedef detail::tmat4x4<highp_float>    highp_mat4;
-00258 
-00263         typedef detail::tmat4x4<lowp_float>             lowp_mat4x4;
-00264 
-00269         typedef detail::tmat4x4<mediump_float>  mediump_mat4x4;
-00270 
-00275         typedef detail::tmat4x4<highp_float>    highp_mat4x4;
-00276 
-00277 }//namespace precision
-00278 }//namespace type
-00279 }//namespace core
-00280 }//namespace glm
-00281 
-00282 #ifndef GLM_EXTERNAL_TEMPLATE
-00283 #include "type_mat4x4.inl"
-00284 #endif//GLM_EXTERNAL_TEMPLATE
-00285 
-00286 #endif//glm_core_type_mat4x4
-
-
- - - diff --git a/doc/api-0.9.2/a00125_source.html b/doc/api-0.9.2/a00125_source.html deleted file mode 100644 index ac451c89..00000000 --- a/doc/api-0.9.2/a00125_source.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - -type_precision.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_precision.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-06-04
-00005 // Updated : 2009-06-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/type_precision.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTC_half
-00012 // - GLM_GTC_quaternion
-00014 
-00015 #ifndef glm_gtc_type_precision
-00016 #define glm_gtc_type_precision
-00017 
-00018 // Dependency:
-00019 #include "../glm.hpp"
-00020 #include "../gtc/half_float.hpp"
-00021 #include "../gtc/quaternion.hpp"
-00022 
-00023 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00024 #       pragma message("GLM: GLM_GTC_type_precision extension included")
-00025 #endif
-00026 
-00027 namespace glm{
-00028 namespace gtc{
-00029 namespace type_precision 
-00030 {
-00032         // Dependences
-00033 
-00034         using namespace gtc::half_float;
-00035         using namespace gtc::quaternion;
-00036 
-00038         // Signed int vector types 
-00039 
-00042 
-00043         typedef detail::int8                                            int8;         
-00044         typedef detail::int16                                           int16;        
-00045         typedef detail::int32                                           int32;        
-00046         typedef detail::int64                                           int64;        
-00047 
-00048         typedef int8                                                            i8;         
-00049         typedef int16                                                           i16;        
-00050         typedef int32                                                           i32;        
-00051         typedef int64                                                           i64;        
-00052 
-00053         //typedef i8                                                                    i8vec1;         //!< \brief 8bit signed integer scalar. (from GLM_GTC_type_precision extension)
-00054         typedef detail::tvec2<i8>                                       i8vec2;     
-00055         typedef detail::tvec3<i8>                                       i8vec3;     
-00056         typedef detail::tvec4<i8>                                       i8vec4;     
-00057 
-00058         //typedef i16                                                                   i16vec1;        //!< \brief 16bit signed integer scalar. (from GLM_GTC_type_precision extension)
-00059         typedef detail::tvec2<i16>                                      i16vec2;    
-00060         typedef detail::tvec3<i16>                                      i16vec3;    
-00061         typedef detail::tvec4<i16>                                      i16vec4;    
-00062 
-00063         //typedef i32                                                                   i32vec1;        //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension)
-00064         typedef detail::tvec2<i32>                                      i32vec2;    
-00065         typedef detail::tvec3<i32>                                      i32vec3;    
-00066         typedef detail::tvec4<i32>                                      i32vec4;    
-00067 
-00068         //typedef i64                                                                   i64vec1;        //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension)
-00069         typedef detail::tvec2<i64>                                      i64vec2;    
-00070         typedef detail::tvec3<i64>                                      i64vec3;    
-00071         typedef detail::tvec4<i64>                                      i64vec4;    
-00072 
-00074         // Unsigned int vector types 
-00075 
-00076         typedef detail::uint8                                           uint8;         
-00077         typedef detail::uint16                                          uint16;        
-00078         typedef detail::uint32                                          uint32;        
-00079         typedef detail::uint64                                          uint64;        
-00080 
-00081         typedef uint8                                                           u8;         
-00082         typedef uint16                                                          u16;        
-00083         typedef uint32                                                          u32;        
-00084         typedef uint64                                                          u64;        
-00085 
-00086         //typedef u8                                                                    u8vec1;         //!< \brief 8bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
-00087         typedef detail::tvec2<u8>                                       u8vec2;     
-00088         typedef detail::tvec3<u8>                                       u8vec3;     
-00089         typedef detail::tvec4<u8>                                       u8vec4;     
-00090 
-00091         //typedef u16                                                                   u16vec1;    //!< \brief 16bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
-00092         typedef detail::tvec2<u16>                                      u16vec2;    
-00093         typedef detail::tvec3<u16>                                      u16vec3;    
-00094         typedef detail::tvec4<u16>                                      u16vec4;    
-00095 
-00096         //typedef u32                                                                   u32vec1;    //!< \brief 32bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
-00097         typedef detail::tvec2<u32>                                      u32vec2;    
-00098         typedef detail::tvec3<u32>                                      u32vec3;    
-00099         typedef detail::tvec4<u32>                                      u32vec4;    
-00100 
-00101         //typedef u64                                                                   u64vec1;    //!< \brief 64bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
-00102         typedef detail::tvec2<u64>                                      u64vec2;    
-00103         typedef detail::tvec3<u64>                                      u64vec3;    
-00104         typedef detail::tvec4<u64>                                      u64vec4;    
-00105 
-00107         // Float vector types 
-00108 
-00109         typedef detail::float16                                         float16;        
-00110         typedef detail::float32                                         float32;        
-00111         typedef detail::float64                                         float64;        
-00112 
-00113         typedef float16                                                         f16;        
-00114         typedef float32                                                         f32;        
-00115         typedef float64                                                         f64;        
-00116 
-00117         typedef detail::tvec2<float>                            fvec2;          
-00118         typedef detail::tvec3<float>                            fvec3;          
-00119         typedef detail::tvec4<float>                            fvec4;          
-00120 
-00121         //typedef f16                                                                   f16vec1;    //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00122         typedef detail::tvec2<f16>                                      f16vec2;    
-00123         typedef detail::tvec3<f16>                                      f16vec3;    
-00124         typedef detail::tvec4<f16>                                      f16vec4;    
-00125 
-00126         //typedef f32                                                                   f32vec1;    //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00127         typedef detail::tvec2<f32>                                      f32vec2;    
-00128         typedef detail::tvec3<f32>                                      f32vec3;    
-00129         typedef detail::tvec4<f32>                                      f32vec4;    
-00130 
-00131         //typedef f64                                                                   f64vec1;    //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00132         typedef detail::tvec2<f64>                                      f64vec2;    
-00133         typedef detail::tvec3<f64>                                      f64vec3;    
-00134         typedef detail::tvec4<f64>                                      f64vec4;    
-00135 
-00137         // Float matrix types 
-00138 
-00139         //typedef f32                                                                   fmat1;  //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00140         typedef detail::tmat2x2<f32>                            fmat2;  
-00141         typedef detail::tmat3x3<f32>                            fmat3;  
-00142         typedef detail::tmat4x4<f32>                            fmat4;  
-00143 
-00144         //typedef f32                                                                   fmat1x1;        //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00145         typedef detail::tmat2x2<f32>                            fmat2x2;  
-00146         typedef detail::tmat2x3<f32>                            fmat2x3;        
-00147         typedef detail::tmat2x4<f32>                            fmat2x4;        
-00148         typedef detail::tmat3x2<f32>                            fmat3x2;        
-00149         typedef detail::tmat3x3<f32>                            fmat3x3;        
-00150         typedef detail::tmat3x4<f32>                            fmat3x4;        
-00151         typedef detail::tmat4x2<f32>                            fmat4x2;        
-00152         typedef detail::tmat4x3<f32>                            fmat4x3;        
-00153         typedef detail::tmat4x4<f32>                            fmat4x4;        
-00154 
-00155         //typedef f16                                                                   f16mat1;    //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00156         typedef detail::tmat2x2<f16>                            f16mat2;        
-00157         typedef detail::tmat3x3<f16>                            f16mat3;        
-00158         typedef detail::tmat4x4<f16>                            f16mat4;        
-00159 
-00160         //typedef f16                                                                   f16mat1x1;      //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00161         typedef detail::tmat2x2<f16>                            f16mat2x2;      
-00162         typedef detail::tmat2x3<f16>                            f16mat2x3;      
-00163         typedef detail::tmat2x4<f16>                            f16mat2x4;      
-00164         typedef detail::tmat3x2<f16>                            f16mat3x2;      
-00165         typedef detail::tmat3x3<f16>                            f16mat3x3;      
-00166         typedef detail::tmat3x4<f16>                            f16mat3x4;      
-00167         typedef detail::tmat4x2<f16>                            f16mat4x2;      
-00168         typedef detail::tmat4x3<f16>                            f16mat4x3;      
-00169         typedef detail::tmat4x4<f16>                            f16mat4x4;      
-00170 
-00171         //typedef f32                                                                   f32mat1;        //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00172         typedef detail::tmat2x2<f32>                            f32mat2;        
-00173         typedef detail::tmat3x3<f32>                            f32mat3;        
-00174         typedef detail::tmat4x4<f32>                            f32mat4;        
-00175 
-00176         //typedef f32                                                                   f32mat1x1;      //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00177         typedef detail::tmat2x2<f32>                            f32mat2x2;  
-00178         typedef detail::tmat2x3<f32>                            f32mat2x3;      
-00179         typedef detail::tmat2x4<f32>                            f32mat2x4;      
-00180         typedef detail::tmat3x2<f32>                            f32mat3x2;      
-00181         typedef detail::tmat3x3<f32>                            f32mat3x3;      
-00182         typedef detail::tmat3x4<f32>                            f32mat3x4;      
-00183         typedef detail::tmat4x2<f32>                            f32mat4x2;      
-00184         typedef detail::tmat4x3<f32>                            f32mat4x3;      
-00185         typedef detail::tmat4x4<f32>                            f32mat4x4;      
-00186 
-00187         //typedef f64                                                                   f64mat1;        //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00188         typedef detail::tmat2x2<f64>                            f64mat2;        
-00189         typedef detail::tmat3x3<f64>                            f64mat3;        
-00190         typedef detail::tmat4x4<f64>                            f64mat4;        
-00191 
-00192         //typedef f64                                                                   f64mat1x1;      //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
-00193         typedef detail::tmat2x2<f64>                            f64mat2x2;      
-00194         typedef detail::tmat2x3<f64>                            f64mat2x3;      
-00195         typedef detail::tmat2x4<f64>                            f64mat2x4;      
-00196         typedef detail::tmat3x2<f64>                            f64mat3x2;      
-00197         typedef detail::tmat3x3<f64>                            f64mat3x3;      
-00198         typedef detail::tmat3x4<f64>                            f64mat3x4;      
-00199         typedef detail::tmat4x2<f64>                            f64mat4x2;      
-00200         typedef detail::tmat4x3<f64>                            f64mat4x3;      
-00201         typedef detail::tmat4x4<f64>                            f64mat4x4;      
-00202 
-00204         // Float quaternion types 
-00205 
-00206         typedef detail::tquat<f16>                                      f16quat;    
-00207         typedef detail::tquat<f32>                                      f32quat;    
-00208         typedef detail::tquat<f64>                                      f64quat;    
-00209 
-00211 
-00212 }//namespace type_precision
-00213 }//namespace gtc
-00214 }//namespace glm
-00215 
-00216 #include "type_precision.inl"
-00217 
-00218 namespace glm{using namespace gtc::type_precision;}
-00219 
-00220 #endif//glm_gtc_type_precision
-
-
- - - diff --git a/doc/api-0.9.2/a00126_source.html b/doc/api-0.9.2/a00126_source.html deleted file mode 100644 index 4d821fdb..00000000 --- a/doc/api-0.9.2/a00126_source.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - -type_ptr.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_ptr.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-05-06
-00005 // Updated : 2010-04-30
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/type_ptr.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtc_type_ptr
-00014 #define glm_gtc_type_ptr
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include <cstring>
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTC_type_ptr extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtc{
-00026 namespace type_ptr 
-00027 { 
-00028 
-00031 
-00034         template<typename T>
-00035         GLM_FUNC_QUALIFIER T const * value_ptr
-00036         (
-00037                 detail::tvec2<T> const & vec
-00038         )
-00039         {
-00040                 return &(vec.x);
-00041         }
-00042 
-00045         template<typename T>
-00046         GLM_FUNC_QUALIFIER T * value_ptr
-00047         (
-00048                 detail::tvec2<T> & vec
-00049         )
-00050         {
-00051                 return &(vec.x);
-00052         }
-00053 
-00056         template<typename T>
-00057         GLM_FUNC_QUALIFIER T const * value_ptr
-00058         (
-00059                 detail::tvec3<T> const & vec
-00060         )
-00061         {
-00062                 return &(vec.x);
-00063         }
-00064 
-00067         template<typename T>
-00068         GLM_FUNC_QUALIFIER T * value_ptr
-00069         (
-00070                 detail::tvec3<T> & vec
-00071         )
-00072         {
-00073                 return &(vec.x);
-00074         }
-00075                 
-00078         template<typename T>
-00079         GLM_FUNC_QUALIFIER T const * value_ptr
-00080         (       
-00081                 detail::tvec4<T> const & vec
-00082         )
-00083         {
-00084                 return &(vec.x);
-00085         }
-00086 
-00089         template<typename T>
-00090         GLM_FUNC_QUALIFIER T * value_ptr
-00091         (       
-00092                 detail::tvec4<T> & vec
-00093         )
-00094         {
-00095                 return &(vec.x);
-00096         }
-00097 
-00100         template<typename T>
-00101         GLM_FUNC_QUALIFIER T const * value_ptr
-00102         (
-00103                 detail::tmat2x2<T> const & mat
-00104         )
-00105         {
-00106                 return &(mat[0].x);
-00107         }
-00108 
-00111         template<typename T>
-00112         GLM_FUNC_QUALIFIER T * value_ptr
-00113         (
-00114                 detail::tmat2x2<T> & mat
-00115         )
-00116         {
-00117                 return &(mat[0].x);
-00118         }
-00119                 
-00122         template<typename T>
-00123         GLM_FUNC_QUALIFIER T const * value_ptr
-00124         (
-00125                 detail::tmat3x3<T> const & mat
-00126         )
-00127         {
-00128                 return &(mat[0].x);
-00129         }
-00130 
-00133         template<typename T>
-00134         GLM_FUNC_QUALIFIER T * value_ptr
-00135         (
-00136                 detail::tmat3x3<T> & mat
-00137         )
-00138         {
-00139                 return &(mat[0].x);
-00140         }
-00141                 
-00144         template<typename T>
-00145         GLM_FUNC_QUALIFIER T const * value_ptr
-00146         (
-00147                 detail::tmat4x4<T> const & mat
-00148         )
-00149         {
-00150                 return &(mat[0].x);
-00151         }
-00152 
-00155         template<typename T>
-00156         GLM_FUNC_QUALIFIER T * value_ptr
-00157         (
-00158                 detail::tmat4x4<T> & mat
-00159         )
-00160         {
-00161                 return &(mat[0].x);
-00162         }
-00163 
-00166         template<typename T>
-00167         GLM_FUNC_QUALIFIER T const * value_ptr
-00168         (
-00169                 detail::tmat2x3<T> const & mat
-00170         )
-00171         {
-00172                 return &(mat[0].x);
-00173         }
-00174 
-00177         template<typename T>
-00178         GLM_FUNC_QUALIFIER T * value_ptr
-00179         (
-00180                 detail::tmat2x3<T> & mat
-00181         )
-00182         {
-00183                 return &(mat[0].x);
-00184         }
-00185                 
-00188         template<typename T>
-00189         GLM_FUNC_QUALIFIER T const * value_ptr
-00190         (
-00191                 detail::tmat3x2<T> const & mat
-00192         )
-00193         {
-00194                 return &(mat[0].x);
-00195         }
-00196 
-00199         template<typename T>
-00200         GLM_FUNC_QUALIFIER T * value_ptr
-00201         (
-00202                 detail::tmat3x2<T> & mat
-00203         )
-00204         {
-00205                 return &(mat[0].x);
-00206         }
-00207                 
-00210         template<typename T>
-00211         GLM_FUNC_QUALIFIER T const * value_ptr
-00212         (
-00213                 detail::tmat2x4<T> const & mat
-00214         )
-00215         {
-00216                 return &(mat[0].x);
-00217         }
-00218 
-00221         template<typename T>
-00222         GLM_FUNC_QUALIFIER T * value_ptr
-00223         (
-00224                 detail::tmat2x4<T> & mat
-00225         )
-00226         {
-00227                 return &(mat[0].x);
-00228         }
-00229                 
-00232         template<typename T>
-00233         GLM_FUNC_QUALIFIER T const * value_ptr
-00234         (
-00235                 detail::tmat4x2<T> const & mat
-00236         )
-00237         {
-00238                 return &(mat[0].x);
-00239         }
-00240 
-00243         template<typename T>
-00244         GLM_FUNC_QUALIFIER T * value_ptr
-00245         (       
-00246                 detail::tmat4x2<T> & mat
-00247         )
-00248         {
-00249                 return &(mat[0].x);
-00250         }
-00251                 
-00254         template<typename T>
-00255         GLM_FUNC_QUALIFIER T const * value_ptr
-00256         (
-00257                 detail::tmat3x4<T> const & mat
-00258         )
-00259         {
-00260                 return &(mat[0].x);
-00261         }
-00262 
-00265         template<typename T>
-00266         GLM_FUNC_QUALIFIER T * value_ptr
-00267         (
-00268                 detail::tmat3x4<T> & mat
-00269         )
-00270         {
-00271                 return &(mat[0].x);
-00272         }
-00273                 
-00276         template<typename T>
-00277         GLM_FUNC_QUALIFIER T const * value_ptr
-00278         (
-00279                 detail::tmat4x3<T> const & mat
-00280         )
-00281         {
-00282                 return &(mat[0].x);
-00283         }
-00284 
-00287         template<typename T>
-00288         GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T> & mat)
-00289         {
-00290                 return &(mat[0].x);
-00291         }
-00292 
-00295         template<typename T>
-00296         GLM_FUNC_QUALIFIER detail::tvec2<T> make_vec2(T const * const ptr)
-00297         {
-00298                 detail::tvec2<T> Result;
-00299                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T>));
-00300                 return Result;
-00301         }
-00302 
-00305         template<typename T>
-00306         GLM_FUNC_QUALIFIER detail::tvec3<T> make_vec3(T const * const ptr)
-00307         {
-00308                 detail::tvec3<T> Result;
-00309                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T>));
-00310                 return Result;
-00311         }
-00312 
-00315         template<typename T>
-00316         GLM_FUNC_QUALIFIER detail::tvec4<T> make_vec4(T const * const ptr)
-00317         {
-00318                 detail::tvec4<T> Result;
-00319                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T>));
-00320                 return Result;
-00321         }
-00322 
-00325         template<typename T>
-00326         GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2x2(T const * const ptr)
-00327         {
-00328                 detail::tmat2x2<T> Result;
-00329                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T>));
-00330                 return Result;
-00331         }
-00332         
-00335         template<typename T>
-00336         GLM_FUNC_QUALIFIER detail::tmat2x3<T> make_mat2x3(T const * const ptr)
-00337         {
-00338                 detail::tmat2x3<T> Result;
-00339                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T>));
-00340                 return Result;
-00341         }
-00342         
-00345         template<typename T>
-00346         GLM_FUNC_QUALIFIER detail::tmat2x4<T> make_mat2x4(T const * const ptr)
-00347         {
-00348                 detail::tmat2x4<T> Result;
-00349                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T>));
-00350                 return Result;
-00351         }
-00352         
-00355         template<typename T>
-00356         GLM_FUNC_QUALIFIER detail::tmat3x2<T> make_mat3x2(T const * const ptr)
-00357         {
-00358                 detail::tmat3x2<T> Result;
-00359                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T>));
-00360                 return Result;
-00361         }
-00362         
-00365         template<typename T>
-00366         GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3x3(T const * const ptr)
-00367         {
-00368                 detail::tmat3x3<T> Result;
-00369                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T>));
-00370                 return Result;
-00371         }
-00372 
-00375         template<typename T>
-00376         GLM_FUNC_QUALIFIER detail::tmat3x4<T> make_mat3x4(T const * const ptr)
-00377         {
-00378                 detail::tmat3x4<T> Result;
-00379                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T>));
-00380                 return Result;
-00381         }
-00382 
-00383         
-00386         template<typename T>
-00387         GLM_FUNC_QUALIFIER detail::tmat4x2<T> make_mat4x2(T const * const ptr)
-00388         {
-00389                 detail::tmat4x2<T> Result;
-00390                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T>));
-00391                 return Result;
-00392         }
-00393         
-00396         template<typename T>
-00397         GLM_FUNC_QUALIFIER detail::tmat4x3<T> make_mat4x3(T const * const ptr)
-00398         {
-00399                 detail::tmat4x3<T> Result;
-00400                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T>));
-00401                 return Result;
-00402         }
-00403         
-00406         template<typename T>
-00407         GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4x4(T const * const ptr)
-00408         {
-00409                 detail::tmat4x4<T> Result;
-00410                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T>));
-00411                 return Result;
-00412         }
-00413         
-00416         template<typename T>
-00417         GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2(T const * const ptr)
-00418         {
-00419                 return make_mat2x2(ptr);
-00420         }
-00421         
-00424         template<typename T>
-00425         GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3(T const * const ptr)
-00426         {
-00427                 return make_mat3x3(ptr);
-00428         }
-00429                 
-00432         template<typename T>
-00433         GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4(T const * const ptr)
-00434         {
-00435                 return make_mat4x4(ptr);
-00436         }
-00437         
-00439 
-00440 }//namespace type_ptr
-00441 }//namespace gtc
-00442 }//namespace glm
-00443 
-00444 #include "type_ptr.inl"
-00445 
-00446 namespace glm{using namespace gtc::type_ptr;}
-00447 
-00448 #endif//glm_gtx_type_ptr
-00449 
-
-
- - - diff --git a/doc/api-0.9.2/a00127_source.html b/doc/api-0.9.2/a00127_source.html deleted file mode 100644 index 35e0d869..00000000 --- a/doc/api-0.9.2/a00127_source.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - -type_size.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_size.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-10-05
-00005 // Updated : 2008-10-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_size.hpp
-00009 
-00010 #ifndef glm_core_type_size
-00011 #define glm_core_type_size
-00012 
-00013 #include <cstdlib>
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018         //typedef std::size_t size_t;
-00019         typedef int sizeType;
-00020 
-00021 }//namespace detail
-00022 }//namespace glm
-00023 
-00024 #endif//glm_core_type_size
-
-
- - - diff --git a/doc/api-0.9.2/a00128_source.html b/doc/api-0.9.2/a00128_source.html deleted file mode 100644 index bd204e2c..00000000 --- a/doc/api-0.9.2/a00128_source.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - -type_vec.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_vec.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2010-01-26
-00005 // Updated : 2010-02-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_vec.hpp
-00009 
-00010 #ifndef glm_core_type_vec
-00011 #define glm_core_type_vec
-00012 
-00013 #include "type_gentype.hpp"
-00014 
-00015 namespace glm{
-00016 namespace detail
-00017 {
-00018 
-00019 }//namespace detail
-00020 }//namespace glm
-00021 
-00022 #endif//glm_core_type_vec
-
-
- - - diff --git a/doc/api-0.9.2/a00129_source.html b/doc/api-0.9.2/a00129_source.html deleted file mode 100644 index ffff08b6..00000000 --- a/doc/api-0.9.2/a00129_source.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - -type_vec1.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_vec1.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-25
-00005 // Updated : 2010-02-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_vec1.hpp
-00009 
-00010 #ifndef glm_core_type_gentype1
-00011 #define glm_core_type_gentype1
-00012 
-00013 #include "type_vec.hpp"
-00014 #include "type_float.hpp"
-00015 #include "type_int.hpp"
-00016 #include "type_size.hpp"
-00017 #include "_swizzle.hpp"
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022         template <typename T> struct tref1;
-00023         template <typename T> struct tref2;
-00024         template <typename T> struct tref3;
-00025         template <typename T> struct tref4;
-00026         template <typename T> struct tvec1;
-00027         template <typename T> struct tvec2;
-00028         template <typename T> struct tvec3;
-00029         template <typename T> struct tvec4;
-00030 
-00031         template <typename T>
-00032         struct tvec1
-00033         {
-00034                 enum ctor{null};
-00035 
-00036                 typedef T value_type;
-00037                 typedef std::size_t size_type;
-00038                 GLM_FUNC_DECL size_type length() const;
-00039                 static GLM_FUNC_DECL size_type value_size();
-00040 
-00041                 typedef tvec1<T> type;
-00042                 typedef tvec1<bool> bool_type;
-00043 
-00045                 // Data
-00046 
-00047 #               if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW)
-00048                         value_type x;
-00049 #               else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES)
-00050                         union {value_type x, r, s;};
-00051 #               endif//GLM_COMPONENT
-00052 
-00054                 // Accesses
-00055 
-00056                 GLM_FUNC_DECL value_type & operator[](size_type i);
-00057                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
-00058 
-00060                 // Implicit basic constructors
-00061 
-00062                 GLM_FUNC_DECL tvec1();
-00063                 GLM_FUNC_DECL tvec1(tvec1<T> const & v);
-00064 
-00066                 // Explicit basic constructors
-00067 
-00068                 GLM_FUNC_DECL explicit tvec1(
-00069                         ctor);
-00070                 GLM_FUNC_DECL explicit tvec1(
-00071                         value_type const & s);
-00072 
-00074                 // Swizzle constructors
-00075 
-00076                 GLM_FUNC_DECL tvec1(tref1<T> const & r);
-00077 
-00079                 // Convertion scalar constructors
-00080 
-00082                 template <typename U> 
-00083                 GLM_FUNC_DECL explicit tvec1(U const & s);
-00084 
-00086                 // Convertion vector constructors
-00087 
-00089                 template <typename U> 
-00090                 GLM_FUNC_DECL explicit tvec1(tvec2<U> const & v);
-00092                 template <typename U> 
-00093                 GLM_FUNC_DECL explicit tvec1(tvec3<U> const & v);
-00095                 template <typename U> 
-00096                 GLM_FUNC_DECL explicit tvec1(tvec4<U> const & v);
-00097 
-00099                 // Unary arithmetic operators
-00100 
-00101                 GLM_FUNC_DECL tvec1<T> & operator= (tvec1<T> const & v);
-00102 
-00103                 GLM_FUNC_DECL tvec1<T> & operator+=(value_type const & s);
-00104                 GLM_FUNC_DECL tvec1<T> & operator+=(tvec1<T> const & v);
-00105                 GLM_FUNC_DECL tvec1<T> & operator-=(value_type const & s);
-00106                 GLM_FUNC_DECL tvec1<T> & operator-=(tvec1<T> const & v);
-00107                 GLM_FUNC_DECL tvec1<T> & operator*=(value_type const & s);
-00108                 GLM_FUNC_DECL tvec1<T> & operator*=(tvec1<T> const & v);
-00109                 GLM_FUNC_DECL tvec1<T> & operator/=(value_type const & s);
-00110                 GLM_FUNC_DECL tvec1<T> & operator/=(tvec1<T> const & v);
-00111                 GLM_FUNC_DECL tvec1<T> & operator++();
-00112                 GLM_FUNC_DECL tvec1<T> & operator--();
-00113 
-00115                 // Unary bit operators
-00116 
-00117                 GLM_FUNC_DECL tvec1<T> & operator%=(value_type const & s);
-00118                 GLM_FUNC_DECL tvec1<T> & operator%=(tvec1<T> const & v);
-00119                 GLM_FUNC_DECL tvec1<T> & operator&=(value_type const & s);
-00120                 GLM_FUNC_DECL tvec1<T> & operator&=(tvec1<T> const & v);
-00121                 GLM_FUNC_DECL tvec1<T> & operator|=(value_type const & s);
-00122                 GLM_FUNC_DECL tvec1<T> & operator|=(tvec1<T> const & v);
-00123                 GLM_FUNC_DECL tvec1<T> & operator^=(value_type const & s);
-00124                 GLM_FUNC_DECL tvec1<T> & operator^=(tvec1<T> const & v);
-00125                 GLM_FUNC_DECL tvec1<T> & operator<<=(value_type const & s);
-00126                 GLM_FUNC_DECL tvec1<T> & operator<<=(tvec1<T> const & v);
-00127                 GLM_FUNC_DECL tvec1<T> & operator>>=(value_type const & s);
-00128                 GLM_FUNC_DECL tvec1<T> & operator>>=(tvec1<T> const & v);
-00129 
-00131                 // Swizzle operators
-00132 
-00133                 GLM_FUNC_DECL value_type swizzle(comp X) const;
-00134                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
-00135                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
-00136                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
-00137                 GLM_FUNC_DECL tref1<T> swizzle(comp X);
-00138         };
-00139 
-00140         template <typename T>
-00141         struct tref1
-00142         {
-00143                 GLM_FUNC_DECL tref1(T & x);
-00144                 GLM_FUNC_DECL tref1(tref1<T> const & r);
-00145                 GLM_FUNC_DECL tref1(tvec1<T> const & v);
-00146 
-00147                 GLM_FUNC_DECL tref1<T> & operator= (tref1<T> const & r);
-00148                 GLM_FUNC_DECL tref1<T> & operator= (tvec1<T> const & v);
-00149 
-00150                 T& x;
-00151         };
-00152 
-00153         GLM_DETAIL_IS_VECTOR(tvec1);
-00154 
-00155         typedef detail::tvec1<core::type::precision::highp_float>               highp_vec1_t;
-00156         typedef detail::tvec1<core::type::precision::mediump_float>             mediump_vec1_t;
-00157         typedef detail::tvec1<core::type::precision::lowp_float>                lowp_vec1_t;
-00158         typedef detail::tvec1<core::type::precision::highp_int>                 highp_ivec1_t;
-00159         typedef detail::tvec1<core::type::precision::mediump_int>               mediump_ivec1_t;
-00160         typedef detail::tvec1<core::type::precision::lowp_int>                  lowp_ivec1_t;
-00161         typedef detail::tvec1<core::type::precision::highp_uint>                highp_uvec1_t;
-00162         typedef detail::tvec1<core::type::precision::mediump_uint>              mediump_uvec1_t;
-00163         typedef detail::tvec1<core::type::precision::lowp_uint>                 lowp_uvec1_t;
-00164 
-00165 }//namespace detail
-00166 }//namespace glm
-00167 
-00168 #ifndef GLM_EXTERNAL_TEMPLATE
-00169 #include "type_vec1.inl"
-00170 #endif//GLM_EXTERNAL_TEMPLATE
-00171 
-00172 #endif//glm_core_type_gentype1
-
-
- - - diff --git a/doc/api-0.9.2/a00130_source.html b/doc/api-0.9.2/a00130_source.html deleted file mode 100644 index d759efa7..00000000 --- a/doc/api-0.9.2/a00130_source.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - -type_vec2.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_vec2.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-18
-00005 // Updated : 2010-02-04
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_tvec2.hpp
-00009 
-00010 #ifndef glm_core_type_gentype2
-00011 #define glm_core_type_gentype2
-00012 
-00013 #include "type_vec.hpp"
-00014 #include "type_float.hpp"
-00015 #include "type_int.hpp"
-00016 #include "type_size.hpp"
-00017 #include "_swizzle.hpp"
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022         template <typename T> struct tref2;
-00023         template <typename T> struct tref3;
-00024         template <typename T> struct tref4;
-00025         template <typename T> struct tvec3;
-00026         template <typename T> struct tvec4;
-00027 
-00030         template <typename T>
-00031         struct tvec2
-00032         {
-00033                 enum ctor{null};
-00034 
-00035                 typedef T value_type;
-00036                 typedef std::size_t size_type;
-00037                 GLM_FUNC_DECL size_type length() const;
-00038                 static GLM_FUNC_DECL size_type value_size();
-00039 
-00040                 typedef tvec2<T> type;
-00041                 typedef tvec2<bool> bool_type;
-00042 
-00044                 // Data
-00045 
-00046 #               if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW)
-00047                 value_type x, y;
-00048 #               elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT)
-00049                 union 
-00050                 {
-00051                         struct{value_type r, g;};
-00052                         struct{value_type s, t;};
-00053                         struct{value_type x, y;};
-00054                 };
-00055 #               else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES)
-00056                 union {value_type x, r, s;};
-00057                 union {value_type y, g, t;};
-00058 #               endif//GLM_COMPONENT
-00059 
-00061                 // Accesses
-00062 
-00063                 GLM_FUNC_DECL value_type & operator[](size_type i);
-00064                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
-00065 
-00067                 // Implicit basic constructors
-00068 
-00069                 GLM_FUNC_DECL tvec2();
-00070                 GLM_FUNC_DECL tvec2(tvec2<T> const & v);
-00071 
-00073                 // Explicit basic constructors
-00074 
-00075                 GLM_FUNC_DECL explicit tvec2(
-00076                         ctor);
-00077                 GLM_FUNC_DECL explicit tvec2(
-00078                         value_type const & s);
-00079                 GLM_FUNC_DECL explicit tvec2(
-00080                         value_type const & s1, 
-00081                         value_type const & s2);
-00082 
-00084                 // Swizzle constructors
-00085 
-00086                 tvec2(tref2<T> const & r);
-00087 
-00089                 // Convertion constructors
-00090 
-00092                 template <typename U> 
-00093                 GLM_FUNC_DECL explicit tvec2(
-00094                         U const & x);
-00096                 template <typename U, typename V> 
-00097                 GLM_FUNC_DECL explicit tvec2(
-00098                         U const & x, 
-00099                         V const & y);
-00100 
-00102                 // Convertion vector constructors
-00103 
-00105                 template <typename U> 
-00106                 GLM_FUNC_DECL explicit tvec2(tvec2<U> const & v);
-00108                 template <typename U> 
-00109                 GLM_FUNC_DECL explicit tvec2(tvec3<U> const & v);
-00111                 template <typename U> 
-00112                 GLM_FUNC_DECL explicit tvec2(tvec4<U> const & v);
-00113 
-00115                 // Unary arithmetic operators
-00116 
-00117                 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<T> const & v);
-00118                 template <typename U> 
-00119                 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<U> const & v);
-00120 
-00121                 template <typename U> 
-00122                 GLM_FUNC_DECL tvec2<T> & operator+=(U const & s);
-00123                 template <typename U> 
-00124                 GLM_FUNC_DECL tvec2<T> & operator+=(tvec2<U> const & v);
-00125                 template <typename U> 
-00126                 GLM_FUNC_DECL tvec2<T> & operator-=(U const & s);
-00127                 template <typename U> 
-00128                 GLM_FUNC_DECL tvec2<T> & operator-=(tvec2<U> const & v);
-00129                 template <typename U> 
-00130                 GLM_FUNC_DECL tvec2<T> & operator*=(U const & s);
-00131                 template <typename U> 
-00132                 GLM_FUNC_DECL tvec2<T> & operator*=(tvec2<U> const & v);
-00133                 template <typename U> 
-00134                 GLM_FUNC_DECL tvec2<T> & operator/=(U const & s);
-00135                 template <typename U> 
-00136                 GLM_FUNC_DECL tvec2<T> & operator/=(tvec2<U> const & v);
-00137                 GLM_FUNC_DECL tvec2<T> & operator++();
-00138                 GLM_FUNC_DECL tvec2<T> & operator--();
-00139 
-00141                 // Unary bit operators
-00142 
-00143                 template <typename U> 
-00144                 GLM_FUNC_DECL tvec2<T> & operator%= (U const & s);
-00145                 template <typename U> 
-00146                 GLM_FUNC_DECL tvec2<T> & operator%= (tvec2<U> const & v);
-00147                 template <typename U> 
-00148                 GLM_FUNC_DECL tvec2<T> & operator&= (U const & s);
-00149                 template <typename U> 
-00150                 GLM_FUNC_DECL tvec2<T> & operator&= (tvec2<U> const & v);
-00151                 template <typename U> 
-00152                 GLM_FUNC_DECL tvec2<T> & operator|= (U const & s);
-00153                 template <typename U> 
-00154                 GLM_FUNC_DECL tvec2<T> & operator|= (tvec2<U> const & v);
-00155                 template <typename U> 
-00156                 GLM_FUNC_DECL tvec2<T> & operator^= (U const & s);
-00157                 template <typename U> 
-00158                 GLM_FUNC_DECL tvec2<T> & operator^= (tvec2<U> const & v);
-00159                 template <typename U> 
-00160                 GLM_FUNC_DECL tvec2<T> & operator<<=(U const & s);
-00161                 template <typename U> 
-00162                 GLM_FUNC_DECL tvec2<T> & operator<<=(tvec2<U> const & v);
-00163                 template <typename U> 
-00164                 GLM_FUNC_DECL tvec2<T> & operator>>=(U const & s);
-00165                 template <typename U> 
-00166                 GLM_FUNC_DECL tvec2<T> & operator>>=(tvec2<U> const & v);
-00167 
-00169                 // Swizzle operators
-00170 
-00171                 GLM_FUNC_DECL value_type swizzle(comp X) const;
-00172                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
-00173                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
-00174                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
-00175                 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y);
-00176         };
-00177 
-00178         template <typename T>
-00179         struct tref2
-00180         {
-00181                 GLM_FUNC_DECL tref2(T & x, T & y);
-00182                 GLM_FUNC_DECL tref2(tref2<T> const & r);
-00183                 GLM_FUNC_DECL tref2(tvec2<T> const & v);
-00184 
-00185                 GLM_FUNC_DECL tref2<T> & operator= (tref2<T> const & r);
-00186                 GLM_FUNC_DECL tref2<T> & operator= (tvec2<T> const & v);
-00187 
-00188                 GLM_FUNC_DECL tvec2<T> operator() ();
-00189 
-00190                 T & x;
-00191                 T & y;
-00192         };
-00193 
-00194         GLM_DETAIL_IS_VECTOR(tvec2);
-00195 
-00196 } //namespace detail
-00197 
-00198 namespace core{
-00199 namespace type{
-00200 namespace precision
-00201 {
-00206         typedef detail::tvec2<highp_float>              highp_vec2;
-00207 
-00212         typedef detail::tvec2<mediump_float>    mediump_vec2;
-00213 
-00218         typedef detail::tvec2<lowp_float>               lowp_vec2;
-00219 
-00224         typedef detail::tvec2<highp_int>                highp_ivec2;
-00225 
-00230         typedef detail::tvec2<mediump_int>              mediump_ivec2;
-00231 
-00236         typedef detail::tvec2<lowp_int>                 lowp_ivec2;
-00237         
-00242         typedef detail::tvec2<highp_uint>               highp_uvec2;
-00243 
-00248         typedef detail::tvec2<mediump_uint>             mediump_uvec2;
-00249 
-00254         typedef detail::tvec2<lowp_uint>                lowp_uvec2;
-00255 
-00256 }//namespace precision
-00257 }//namespace type
-00258 }//namespace core
-00259 }//namespace glm
-00260 
-00261 #ifndef GLM_EXTERNAL_TEMPLATE
-00262 #include "type_vec2.inl"
-00263 #endif//GLM_EXTERNAL_TEMPLATE
-00264 
-00265 #endif//glm_core_type_gentype2
-
-
- - - diff --git a/doc/api-0.9.2/a00131_source.html b/doc/api-0.9.2/a00131_source.html deleted file mode 100644 index 34c98c04..00000000 --- a/doc/api-0.9.2/a00131_source.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - -type_vec3.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_vec3.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-22
-00005 // Updated : 2010-02-03
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_tvec3.hpp
-00009 
-00010 #ifndef glm_core_type_gentype3
-00011 #define glm_core_type_gentype3
-00012 
-00013 #include "type_vec.hpp"
-00014 #include "type_float.hpp"
-00015 #include "type_int.hpp"
-00016 #include "type_size.hpp"
-00017 #include "_swizzle.hpp"
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022         template <typename T> struct tref2;
-00023         template <typename T> struct tref3;
-00024         template <typename T> struct tref4;
-00025         template <typename T> struct tvec2;
-00026         template <typename T> struct tvec4;
-00027 
-00030         template <typename T>
-00031         struct tvec3
-00032         {       
-00033                 enum ctor{null};
-00034 
-00035                 typedef T value_type;
-00036                 typedef std::size_t size_type;
-00037                 GLM_FUNC_DECL size_type length() const;
-00038                 static GLM_FUNC_DECL size_type value_size();
-00039 
-00040                 typedef tvec3<T> type;
-00041                 typedef tvec3<bool> bool_type;
-00042 
-00044                 // Data
-00045 
-00046 #       if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW)
-00047                 value_type x, y, z;
-00048 #       elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT)
-00049                 union 
-00050                 {
-00051                         struct{value_type r, g, b;};
-00052                         struct{value_type s, t, p;};
-00053                         struct{value_type x, y, z;};
-00054                 };
-00055 #       else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES)
-00056                 union {value_type x, r, s;};
-00057                 union {value_type y, g, t;};
-00058                 union {value_type z, b, p;};
-00059 #       endif//GLM_COMPONENT
-00060 
-00062                 // Accesses
-00063 
-00064                 GLM_FUNC_DECL value_type & operator[](size_type i);
-00065                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
-00066 
-00068                 // Implicit basic constructors
-00069 
-00070                 GLM_FUNC_DECL tvec3();
-00071                 GLM_FUNC_DECL tvec3(tvec3<T> const & v);
-00072 
-00074                 // Explicit basic constructors
-00075 
-00076                 GLM_FUNC_DECL explicit tvec3(
-00077                         ctor);
-00078                 GLM_FUNC_DECL explicit tvec3(
-00079                         value_type const & s);
-00080                 GLM_FUNC_DECL explicit tvec3(
-00081                         value_type const & s1, 
-00082                         value_type const & s2, 
-00083                         value_type const & s3);
-00084 
-00086                 // Convertion scalar constructors
-00087 
-00089                 template <typename U> 
-00090                 GLM_FUNC_DECL explicit tvec3(
-00091                         U const & x);
-00093                 template <typename U, typename V, typename W> 
-00094                 GLM_FUNC_DECL explicit tvec3(
-00095                         U const & x, 
-00096                         V const & y, 
-00097                         W const & z);                   
-00098 
-00100                 // Convertion vector constructors
-00101 
-00103                 template <typename A, typename B> 
-00104                 GLM_FUNC_DECL explicit tvec3(tvec2<A> const & v, B const & s);
-00106                 template <typename A, typename B> 
-00107                 GLM_FUNC_DECL explicit tvec3(A const & s, tvec2<B> const & v);
-00109                 template <typename U> 
-00110                 GLM_FUNC_DECL explicit tvec3(tvec3<U> const & v);
-00112                 template <typename U> 
-00113                 GLM_FUNC_DECL explicit tvec3(tvec4<U> const & v);
-00114 
-00116                 // Swizzle constructors
-00117 
-00118                 GLM_FUNC_DECL tvec3(tref3<T> const & r);
-00119 
-00120                 template <typename A, typename B> 
-00121                 GLM_FUNC_DECL explicit tvec3(tref2<A> const & v, B const & s);
-00122 
-00123                 template <typename A, typename B> 
-00124                 GLM_FUNC_DECL explicit tvec3(A const & s, tref2<B> const & v);
-00125 
-00127                 // Unary arithmetic operators
-00128 
-00129                 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<T> const & v);
-00130                 template <typename U> 
-00131                 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<U> const & v);
-00132 
-00133                 template <typename U> 
-00134                 GLM_FUNC_DECL tvec3<T> & operator+=(U const & s);
-00135                 template <typename U> 
-00136                 GLM_FUNC_DECL tvec3<T> & operator+=(tvec3<U> const & v);
-00137                 template <typename U> 
-00138                 GLM_FUNC_DECL tvec3<T> & operator-=(U const & s);
-00139                 template <typename U> 
-00140                 GLM_FUNC_DECL tvec3<T> & operator-=(tvec3<U> const & v);
-00141                 template <typename U> 
-00142                 GLM_FUNC_DECL tvec3<T> & operator*=(U const & s);
-00143                 template <typename U> 
-00144                 GLM_FUNC_DECL tvec3<T> & operator*=(tvec3<U> const & v);
-00145                 template <typename U> 
-00146                 GLM_FUNC_DECL tvec3<T> & operator/=(U const & s);
-00147                 template <typename U> 
-00148                 GLM_FUNC_DECL tvec3<T> & operator/=(tvec3<U> const & v);
-00149                 GLM_FUNC_DECL tvec3<T> & operator++();
-00150                 GLM_FUNC_DECL tvec3<T> & operator--();
-00151 
-00153                 // Unary bit operators
-00154 
-00155                 template <typename U>
-00156                 GLM_FUNC_DECL tvec3<T> & operator%= (U const & s);
-00157                 template <typename U>
-00158                 GLM_FUNC_DECL tvec3<T> & operator%= (tvec3<U> const & v);
-00159                 template <typename U>
-00160                 GLM_FUNC_DECL tvec3<T> & operator&= (U const & s);
-00161                 template <typename U>
-00162                 GLM_FUNC_DECL tvec3<T> & operator&= (tvec3<U> const & v);
-00163                 template <typename U>
-00164                 GLM_FUNC_DECL tvec3<T> & operator|= (U const & s);
-00165                 template <typename U>
-00166                 GLM_FUNC_DECL tvec3<T> & operator|= (tvec3<U> const & v);
-00167                 template <typename U>
-00168                 GLM_FUNC_DECL tvec3<T> & operator^= (U const & s);
-00169                 template <typename U>
-00170                 GLM_FUNC_DECL tvec3<T> & operator^= (tvec3<U> const & v);
-00171                 template <typename U>
-00172                 GLM_FUNC_DECL tvec3<T> & operator<<=(U const & s);
-00173                 template <typename U>
-00174                 GLM_FUNC_DECL tvec3<T> & operator<<=(tvec3<U> const & v);
-00175                 template <typename U>
-00176                 GLM_FUNC_DECL tvec3<T> & operator>>=(U const & s);
-00177                 template <typename U>
-00178                 GLM_FUNC_DECL tvec3<T> & operator>>=(tvec3<U> const & v);
-00179 
-00181                 // Swizzle operators
-00182 
-00183                 GLM_FUNC_DECL value_type swizzle(comp X) const;
-00184                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
-00185                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
-00186                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
-00187                 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y);
-00188                 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z);
-00189         };
-00190 
-00191         template <typename T>
-00192         struct tref3
-00193         {
-00194                 GLM_FUNC_DECL tref3(T & x, T & y, T & z);
-00195                 GLM_FUNC_DECL tref3(tref3<T> const & r);
-00196                 GLM_FUNC_DECL tref3(tvec3<T> const & v);
-00197 
-00198                 GLM_FUNC_DECL tref3<T> & operator= (tref3<T> const & r);
-00199                 GLM_FUNC_DECL tref3<T> & operator= (tvec3<T> const & v);
-00200 
-00201                 GLM_FUNC_DECL tvec3<T> operator() ();
-00202 
-00203                 T & x;
-00204                 T & y;
-00205                 T & z;
-00206         };
-00207 
-00208         GLM_DETAIL_IS_VECTOR(tvec3);
-00209 } //namespace detail
-00210 
-00211 namespace core{
-00212 namespace type{
-00213 namespace precision
-00214 {
-00219         typedef detail::tvec3<highp_float>              highp_vec3;
-00220 
-00225         typedef detail::tvec3<mediump_float>    mediump_vec3;
-00226 
-00231         typedef detail::tvec3<lowp_float>               lowp_vec3;
-00232 
-00237         typedef detail::tvec3<highp_int>                highp_ivec3;
-00238 
-00243         typedef detail::tvec3<mediump_int>              mediump_ivec3;
-00244 
-00249         typedef detail::tvec3<lowp_int>                 lowp_ivec3;
-00250 
-00255         typedef detail::tvec3<highp_uint>               highp_uvec3;
-00256 
-00261         typedef detail::tvec3<mediump_uint>             mediump_uvec3;
-00262 
-00267         typedef detail::tvec3<lowp_uint>                lowp_uvec3;
-00268 
-00269 }//namespace precision
-00270 }//namespace type
-00271 }//namespace core
-00272 }//namespace glm
-00273 
-00274 #ifndef GLM_EXTERNAL_TEMPLATE
-00275 #include "type_vec3.inl"
-00276 #endif//GLM_EXTERNAL_TEMPLATE
-00277 
-00278 #endif//glm_core_type_gentype3
-
-
- - - diff --git a/doc/api-0.9.2/a00132_source.html b/doc/api-0.9.2/a00132_source.html deleted file mode 100644 index da361d86..00000000 --- a/doc/api-0.9.2/a00132_source.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - -type_vec4.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
type_vec4.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-08-22
-00005 // Updated : 2010-02-03
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_tvec4.hpp
-00009 
-00010 #ifndef glm_core_type_gentype4
-00011 #define glm_core_type_gentype4
-00012 
-00013 #include "type_vec.hpp"
-00014 #include "type_float.hpp"
-00015 #include "type_int.hpp"
-00016 #include "type_size.hpp"
-00017 #include "_swizzle.hpp"
-00018 
-00019 namespace glm{
-00020 namespace detail
-00021 {
-00022         template <typename T> struct tref2;
-00023         template <typename T> struct tref3;
-00024         template <typename T> struct tref4;
-00025         template <typename T> struct tvec2;
-00026         template <typename T> struct tvec3;
-00027 
-00030         template <typename T>
-00031         struct tvec4
-00032         {
-00033                 enum ctor{null};
-00034 
-00035                 typedef T value_type;
-00036                 typedef std::size_t size_type;
-00037                 GLM_FUNC_DECL size_type length() const;
-00038                 static GLM_FUNC_DECL size_type value_size();
-00039 
-00040                 typedef tvec4<T> type;
-00041                 typedef tvec4<bool> bool_type;
-00042 
-00044                 // Data
-00045 
-00046 #       if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW)
-00047                 value_type x, y, z, w;
-00048 #       elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT)
-00049                 union 
-00050                 {
-00051                         struct{value_type r, g, b, a;};
-00052                         struct{value_type s, t, p, q;};
-00053                         struct{value_type x, y, z, w;};
-00054                 };
-00055 #       else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES)
-00056                 union {value_type x, r, s;};
-00057                 union {value_type y, g, t;};
-00058                 union {value_type z, b, p;};
-00059                 union {value_type w, a, q;};
-00060 #       endif//GLM_COMPONENT
-00061 
-00063                 // Accesses
-00064 
-00065                 GLM_FUNC_DECL value_type & operator[](size_type i);
-00066                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
-00067 
-00069                 // Implicit basic constructors
-00070 
-00071                 GLM_FUNC_DECL tvec4();
-00072                 GLM_FUNC_DECL tvec4(type const & v);
-00073 
-00075                 // Explicit basic constructors
-00076 
-00077                 GLM_FUNC_DECL explicit tvec4(
-00078                         ctor);
-00079                 GLM_FUNC_DECL explicit tvec4(
-00080                         value_type const & s);
-00081                 GLM_FUNC_DECL explicit tvec4(
-00082                         value_type const & s0, 
-00083                         value_type const & s1, 
-00084                         value_type const & s2, 
-00085                         value_type const & s3);
-00086 
-00088                 // Convertion scalar constructors
-00089 
-00091                 template <typename U> 
-00092                 GLM_FUNC_DECL explicit tvec4(
-00093                         U const & x);
-00095                 template <typename A, typename B, typename C, typename D> 
-00096                 GLM_FUNC_DECL explicit tvec4(
-00097                         A const & x, 
-00098                         B const & y, 
-00099                         C const & z, 
-00100                         D const & w);                   
-00101 
-00103                 // Convertion vector constructors
-00104 
-00106                 template <typename A, typename B, typename C> 
-00107                 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2);
-00109                 template <typename A, typename B, typename C> 
-00110                 GLM_FUNC_DECL explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2);
-00112                 template <typename A, typename B, typename C> 
-00113                 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v);
-00115                 template <typename A, typename B> 
-00116                 GLM_FUNC_DECL explicit tvec4(tvec3<A> const & v, B const & s);
-00118                 template <typename A, typename B> 
-00119                 GLM_FUNC_DECL explicit tvec4(A const & s, tvec3<B> const & v);
-00121                 template <typename A, typename B> 
-00122                 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2);
-00124                 template <typename U> 
-00125                 GLM_FUNC_DECL explicit tvec4(tvec4<U> const & v);
-00126 
-00128                 // Swizzle constructors
-00129 
-00130                 GLM_FUNC_DECL tvec4(tref4<T> const & r);
-00131 
-00133                 template <typename A, typename B, typename C> 
-00134                 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v, B const & s1, C const & s2);
-00136                 template <typename A, typename B, typename C> 
-00137                 GLM_FUNC_DECL explicit tvec4(A const & s1, tref2<B> const & v, C const & s2);
-00139                 template <typename A, typename B, typename C> 
-00140                 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tref2<C> const & v);
-00142                 template <typename A, typename B> 
-00143                 GLM_FUNC_DECL explicit tvec4(tref3<A> const & v, B const & s);
-00145                 template <typename A, typename B> 
-00146                 GLM_FUNC_DECL explicit tvec4(A const & s, tref3<B> const & v);
-00148                 template <typename A, typename B> 
-00149                 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tref2<B> const & v2);
-00151                 template <typename A, typename B> 
-00152                 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tref2<B> const & v2);
-00154                 template <typename A, typename B> 
-00155                 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tvec2<B> const & v2);
-00156 
-00158                 // Unary arithmetic operators
-00159 
-00160                 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<T> const & v);
-00161                 template <typename U>
-00162                 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<U> const & v);
-00163 
-00164                 template <typename U>
-00165                 GLM_FUNC_DECL tvec4<T> & operator+=(U const & s);
-00166                 template <typename U>
-00167                 GLM_FUNC_DECL tvec4<T> & operator+=(tvec4<U> const & v);
-00168                 template <typename U>
-00169                 GLM_FUNC_DECL tvec4<T> & operator-=(U const & s);
-00170                 template <typename U>
-00171                 GLM_FUNC_DECL tvec4<T> & operator-=(tvec4<U> const & v);
-00172                 template <typename U>
-00173                 GLM_FUNC_DECL tvec4<T> & operator*=(U const & s);
-00174                 template <typename U>
-00175                 GLM_FUNC_DECL tvec4<T> & operator*=(tvec4<U> const & v);
-00176                 template <typename U>
-00177                 GLM_FUNC_DECL tvec4<T> & operator/=(U const & s);
-00178                 template <typename U>
-00179                 GLM_FUNC_DECL tvec4<T> & operator/=(tvec4<U> const & v);
-00180                 GLM_FUNC_DECL tvec4<T> & operator++();
-00181                 GLM_FUNC_DECL tvec4<T> & operator--();
-00182 
-00184                 // Unary bit operators
-00185 
-00186                 template <typename U>
-00187                 GLM_FUNC_DECL tvec4<T> & operator%= (U const & s);
-00188                 template <typename U>
-00189                 GLM_FUNC_DECL tvec4<T> & operator%= (tvec4<U> const & v);
-00190                 template <typename U>
-00191                 GLM_FUNC_DECL tvec4<T> & operator&= (U const & s);
-00192                 template <typename U>
-00193                 GLM_FUNC_DECL tvec4<T> & operator&= (tvec4<U> const & v);
-00194                 template <typename U>
-00195                 GLM_FUNC_DECL tvec4<T> & operator|= (U const & s);
-00196                 template <typename U>
-00197                 GLM_FUNC_DECL tvec4<T> & operator|= (tvec4<U> const & v);
-00198                 template <typename U>
-00199                 GLM_FUNC_DECL tvec4<T> & operator^= (U const & s);
-00200                 template <typename U>
-00201                 GLM_FUNC_DECL tvec4<T> & operator^= (tvec4<U> const & v);
-00202                 template <typename U>
-00203                 GLM_FUNC_DECL tvec4<T> & operator<<=(U const & s);
-00204                 template <typename U>
-00205                 GLM_FUNC_DECL tvec4<T> & operator<<=(tvec4<U> const & v);
-00206                 template <typename U>
-00207                 GLM_FUNC_DECL tvec4<T> & operator>>=(U const & s);
-00208                 template <typename U>
-00209                 GLM_FUNC_DECL tvec4<T> & operator>>=(tvec4<U> const & v);
-00210 
-00212                 // Swizzle operators
-00213 
-00214                 GLM_FUNC_DECL value_type swizzle(comp X) const;
-00215                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
-00216                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
-00217                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
-00218                 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y);
-00219                 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z);
-00220                 GLM_FUNC_DECL tref4<T> swizzle(comp X, comp Y, comp Z, comp W);
-00221         };
-00222 
-00223         template <typename T>
-00224         struct tref4
-00225         {
-00226                 GLM_FUNC_DECL tref4(T & x, T & y, T & z, T & w);
-00227                 GLM_FUNC_DECL tref4(tref4<T> const & r);
-00228                 GLM_FUNC_DECL tref4(tvec4<T> const & v);
-00229 
-00230                 GLM_FUNC_DECL tref4<T> & operator= (tref4<T> const & r);
-00231                 GLM_FUNC_DECL tref4<T> & operator= (tvec4<T> const & v);
-00232 
-00233                 GLM_FUNC_DECL tvec4<T> operator() ();
-00234 
-00235                 T & x;
-00236                 T & y;
-00237                 T & z;
-00238                 T & w;
-00239         };
-00240 
-00241         GLM_DETAIL_IS_VECTOR(tvec4);
-00242 }//namespace detail
-00243 
-00244 namespace core{
-00245 namespace type{
-00246 namespace precision
-00247 {
-00252         typedef detail::tvec4<highp_float>              highp_vec4;
-00253 
-00258         typedef detail::tvec4<mediump_float>    mediump_vec4;
-00259 
-00264         typedef detail::tvec4<lowp_float>               lowp_vec4;
-00265 
-00270         typedef detail::tvec4<highp_int>                highp_ivec4;
-00271 
-00276         typedef detail::tvec4<mediump_int>              mediump_ivec4;
-00277 
-00282         typedef detail::tvec4<lowp_int>                 lowp_ivec4;
-00283 
-00288         typedef detail::tvec4<highp_uint>               highp_uvec4;
-00289 
-00294         typedef detail::tvec4<mediump_uint>             mediump_uvec4;
-00295 
-00300         typedef detail::tvec4<lowp_uint>                lowp_uvec4;
-00301 
-00302 }//namespace precision
-00303 }//namespace type
-00304 }//namespace core
-00305 }//namespace glm
-00306 
-00307 #ifndef GLM_EXTERNAL_TEMPLATE
-00308 #include "type_vec4.inl"
-00309 #endif//GLM_EXTERNAL_TEMPLATE
-00310 
-00311 #endif//glm_core_type_gentype4
-
-
- - - diff --git a/doc/api-0.9.2/a00133_source.html b/doc/api-0.9.2/a00133_source.html deleted file mode 100644 index a95cb15a..00000000 --- a/doc/api-0.9.2/a00133_source.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -ulp.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
ulp.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2011-02-21
-00005 // Updated : 2009-02-21
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/ulp.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_ulp
-00014 #define glm_gtx_ulp
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_ulp extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace ulp 
-00026 {
-00029 
-00032     template <typename genType>
-00033     genType next_float(genType const & x);
-00034         
-00037     template <typename genType>
-00038     genType prev_float(genType const & x);
-00039 
-00042     template <typename genType>
-00043     genType next_float(genType const & x, uint const & Distance);
-00044         
-00047     template <typename genType>
-00048     genType prev_float(genType const & x, uint const & Distance);
-00049         
-00052     template <typename T>
-00053     uint float_distance(T const & x, T const & y);
-00054         
-00057     template<typename T, template<typename> class vecType>
-00058     vecType<uint> float_distance(vecType<T> const & x, vecType<T> const & y);
-00059         
-00061 }// namespace ulp
-00062 }// namespace gtx
-00063 }// namespace glm
-00064 
-00065 #include "ulp.inl"
-00066 
-00067 namespace glm{using namespace gtx::ulp;}
-00068 
-00069 #endif//glm_gtx_ulp
-00070 
-
-
- - - diff --git a/doc/api-0.9.2/a00134_source.html b/doc/api-0.9.2/a00134_source.html deleted file mode 100644 index c9021f3d..00000000 --- a/doc/api-0.9.2/a00134_source.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -unsigned_int.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
unsigned_int.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-24
-00005 // Updated : 2008-10-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/unsigned_int.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_integer
-00013 
-00014 #ifndef glm_gtx_unsigned_int
-00015 #define glm_gtx_unsigned_int
-00016 
-00017 // Dependency:
-00018 #include "../glm.hpp"
-00019 #include "../gtx/integer.hpp"
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_unsigned_int extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace unsigned_int 
-00028 {
-00029         using namespace gtx::integer;
-00030 
-00033 
-00036         typedef signed int                                      sint;
-00037 
-00040         uint pow(uint x, uint y);
-00041 
-00044         uint sqrt(uint x);
-00045 
-00048         uint mod(uint x, uint y);
-00049 
-00051 }//namespace unsigned_int
-00052 }//namespace gtx
-00053 }//namespace glm
-00054 
-00055 #include "unsigned_int.inl"
-00056 
-00057 namespace glm{using namespace gtx::unsigned_int;}
-00058 
-00059 #endif//glm_gtx_unsigned_int
-
-
- - - diff --git a/doc/api-0.9.2/a00135_source.html b/doc/api-0.9.2/a00135_source.html deleted file mode 100644 index 6df9bd63..00000000 --- a/doc/api-0.9.2/a00135_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -vec1.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
vec1.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2010-02-08
-00005 // Updated : 2010-02-08
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/vec1.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_vec1
-00014 #define glm_gtx_vec1
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include "../core/type_vec1.hpp"
-00019 
-00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00021 #       pragma message("GLM: GLM_GTX_vec1 extension included")
-00022 #endif
-00023 
-00024 namespace glm{
-00025 namespace gtx{
-00026 namespace vector1{ 
-00027 namespace precision
-00028 {
-00032         typedef detail::highp_vec1_t                    highp_vec1;
-00036         typedef detail::mediump_vec1_t                  mediump_vec1;
-00040         typedef detail::lowp_vec1_t                             lowp_vec1;
-00041 
-00045         typedef detail::highp_ivec1_t                   highp_ivec1;
-00049         typedef detail::mediump_ivec1_t                 mediump_ivec1;
-00053         typedef detail::lowp_ivec1_t                    lowp_ivec1;
-00054 
-00058         typedef detail::highp_uvec1_t                   highp_uvec1;
-00062         typedef detail::mediump_uvec1_t                 mediump_uvec1;
-00066         typedef detail::lowp_uvec1_t                    lowp_uvec1;
-00067 }//namespace precision
-00068 
-00070         // vec1 definition
-00071 
-00074         typedef detail::tvec1<bool>     bvec1;
-00075 
-00076 #if(defined(GLM_PRECISION_HIGHP_FLOAT))
-00077         typedef precision::highp_vec1                   vec1;
-00078 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
-00079         typedef precision::mediump_vec1                 vec1;
-00080 #elif(defined(GLM_PRECISION_LOWP_FLOAT))
-00081         typedef precision::lowp_vec1                    vec1;
-00082 #else
-00083 
-00084 
-00085         typedef precision::mediump_vec1                 vec1;
-00086 #endif//GLM_PRECISION
-00087 
-00088 #if(defined(GLM_PRECISION_HIGHP_INT))
-00089         typedef precision::highp_ivec1                  ivec1;
-00090 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
-00091         typedef precision::mediump_ivec1                ivec1;
-00092 #elif(defined(GLM_PRECISION_LOWP_INT))
-00093         typedef precision::lowp_ivec1                   ivec1;
-00094 #else
-00095 
-00096 
-00097         typedef precision::mediump_ivec1                ivec1;
-00098 #endif//GLM_PRECISION
-00099 
-00100 #if(defined(GLM_PRECISION_HIGHP_UINT))
-00101         typedef precision::highp_uvec1                  uvec1;
-00102 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
-00103         typedef precision::mediump_uvec1                uvec1;
-00104 #elif(defined(GLM_PRECISION_LOWP_UINT))
-00105         typedef precision::lowp_uvec1                   uvec1;
-00106 #else
-00107 
-00108 
-00109         typedef precision::mediump_uvec1                uvec1;
-00110 #endif//GLM_PRECISION
-00111 
-00112 }// namespace vec1
-00113 }// namespace gtx
-00114 }// namespace glm
-00115 
-00116 #include "vec1.inl"
-00117 
-00118 namespace glm{using namespace gtx::vector1;}
-00119 
-00120 #endif//glm_gtx_vec1
-00121 
-
-
- - - diff --git a/doc/api-0.9.2/a00136_source.html b/doc/api-0.9.2/a00136_source.html deleted file mode 100644 index f16b4b1e..00000000 --- a/doc/api-0.9.2/a00136_source.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - -vector_access.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
vector_access.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-01-16
-00005 // Updated : 2008-10-07
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/vector_access.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_vector_access
-00014 #define glm_gtx_vector_access
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_vector_access extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace vector_access 
-00026 {
-00029 
-00032     template <typename valType> 
-00033         void set(
-00034                 detail::tvec2<valType> & v, 
-00035                 valType const & x, 
-00036                 valType const & y);
-00037 
-00040     template <typename valType> 
-00041         void set(
-00042                 detail::tvec3<valType> & v, 
-00043                 valType const & x, 
-00044                 valType const & y, 
-00045                 valType const & z);
-00046 
-00049     template <typename valType> 
-00050         void set(
-00051                 detail::tvec4<valType> & v, 
-00052                 valType const & x, 
-00053                 valType const & y, 
-00054                 valType const & z, 
-00055                 valType const & w);
-00056 
-00058 }//namespace vector_access
-00059 }//namespace gtx
-00060 }//namespace glm
-00061 
-00062 #include "vector_access.inl"
-00063 
-00064 namespace glm{using namespace gtx::vector_access;}
-00065 
-00066 #endif//glm_gtx_vector_access
-
-
- - - diff --git a/doc/api-0.9.2/a00137_source.html b/doc/api-0.9.2/a00137_source.html deleted file mode 100644 index 596b54ad..00000000 --- a/doc/api-0.9.2/a00137_source.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -vector_angle.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
vector_angle.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2005-12-30
-00005 // Updated : 2006-11-13
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/vector_angle.hpp
-00009 // Dependency:
-00010 // - GLM core
-00011 // - GLM_GTX_quaternion
-00012 // - GLM_GTX_epsilon
-00014 
-00015 #ifndef glm_gtx_vector_angle
-00016 #define glm_gtx_vector_angle
-00017 
-00018 // Dependency:
-00019 #include "../glm.hpp"
-00020 #include "../gtx/epsilon.hpp"
-00021 #include "../gtx/quaternion.hpp"
-00022 #include "../gtx/rotate_vector.hpp"
-00023 
-00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00025 #       pragma message("GLM: GLM_GTX_vector_angle extension included")
-00026 #endif
-00027 
-00028 namespace glm{
-00029 namespace gtx{
-00030 namespace vector_angle 
-00031 {
-00032         using namespace quaternion;
-00033         using namespace epsilon;
-00034 
-00037 
-00041         template <typename vecType> 
-00042         GLM_FUNC_QUALIFIER typename vecType::value_type angle(
-00043                 vecType const & x, 
-00044                 vecType const & y);
-00045 
-00049         template <typename T> 
-00050         GLM_FUNC_QUALIFIER T orientedAngle(
-00051                 detail::tvec2<T> const & x, 
-00052                 detail::tvec2<T> const & y);
-00053 
-00057         template <typename T>
-00058         GLM_FUNC_QUALIFIER T orientedAngle(
-00059                 detail::tvec3<T> const & x,
-00060                 detail::tvec3<T> const & y,
-00061                 detail::tvec3<T> const & ref);
-00062 
-00064 }// namespace vector_angle
-00065 }// namespace gtx
-00066 }// namespace glm
-00067 
-00068 #include "vector_angle.inl"
-00069 
-00070 namespace glm{using namespace gtx::vector_angle;}
-00071 
-00072 #endif//glm_gtx_vector_angle
-
-
- - - diff --git a/doc/api-0.9.2/a00138_source.html b/doc/api-0.9.2/a00138_source.html deleted file mode 100644 index 0d018671..00000000 --- a/doc/api-0.9.2/a00138_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - -vector_query.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
vector_query.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-03-05
-00005 // Updated : 2007-03-05
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/vector_query.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_vector_query
-00014 #define glm_gtx_vector_query
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 #include <cfloat>
-00019 #include <limits>
-00020 
-00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00022 #       pragma message("GLM: GLM_GTX_vector_query extension included")
-00023 #endif
-00024 
-00025 namespace glm{
-00026 namespace gtx{
-00027 namespace vector_query 
-00028 {
-00031 
-00034         template <typename genType> 
-00035         bool areCollinear(
-00036                 genType const & v0, 
-00037                 genType const & v1, 
-00038                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00039                 
-00042         template <typename genType> 
-00043         bool areOpposite(
-00044                 genType const & v0, 
-00045                 genType const & v1, 
-00046                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00047                 
-00050         template <typename genType> 
-00051         bool areOrthogonal(
-00052                 genType const & v0, 
-00053                 genType const & v1, 
-00054                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00055 
-00058         template <typename genType> 
-00059         bool isNormalized(
-00060                 genType const & v, 
-00061                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00062                 
-00065         template <typename genType> 
-00066         bool isNull(
-00067                 genType const & v, 
-00068                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00069 
-00072         template <typename genType>
-00073         bool areOrthonormal(
-00074                 genType const & v0, 
-00075                 genType const & v1, 
-00076                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00077 
-00080         template <typename genType> 
-00081         bool areSimilar(
-00082                 genType const & v0, 
-00083                 genType const & v1, 
-00084                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
-00085 
-00087 }// namespace vector_query
-00088 }// namespace gtx
-00089 }// namespace glm
-00090 
-00091 #include "vector_query.inl"
-00092 
-00093 namespace glm{using namespace gtx::vector_query;}
-00094 
-00095 #endif//glm_gtx_vector_query
-
-
- - - diff --git a/doc/api-0.9.2/a00139_source.html b/doc/api-0.9.2/a00139_source.html deleted file mode 100644 index a2f38df9..00000000 --- a/doc/api-0.9.2/a00139_source.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -verbose_operator.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
verbose_operator.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2007-05-21
-00005 // Updated : 2007-05-21
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/verbose_operator.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_verbose_operator
-00014 #define glm_gtx_verbose_operator
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_verbose_operator extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace verbose_operator 
-00026 {
-00029 
-00032         template <typename genTypeT, typename genTypeU> 
-00033         genTypeT add(genTypeT const & a, genTypeU const & b);
-00034 
-00037         template <typename genTypeT, typename genTypeU> 
-00038         genTypeT sub(genTypeT const & a, genTypeU const & b);
-00039 
-00042         template <typename genTypeT, typename genTypeU> 
-00043         genTypeT mul(genTypeT const & a, genTypeU const & b);
-00044 
-00047         template <typename genTypeT, typename genTypeU> 
-00048         genTypeT div(genTypeT const & a, genTypeU const & b);
-00049 
-00052         template <typename genTypeT, typename genTypeU, typename genTypeV> 
-00053         genTypeT mad(genTypeT const & a, genTypeU const & b, genTypeV const & c);
-00054 
-00056 }// namespace verbose_operator
-00057 }// namespace gtx
-00058 }// namespace glm
-00059 
-00060 #include "verbose_operator.inl"
-00061 
-00062 namespace glm{using namespace gtx::verbose_operator;}
-00063 
-00064 #endif//glm_gtx_verbose_operator
-
-
- - - diff --git a/doc/api-0.9.2/a00140_source.html b/doc/api-0.9.2/a00140_source.html deleted file mode 100644 index aa054d38..00000000 --- a/doc/api-0.9.2/a00140_source.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - -virtrevModules.doxy Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
virtrevModules.doxy
-
-
-
00001 
-
-
- - - diff --git a/doc/api-0.9.2/a00141_source.html b/doc/api-0.9.2/a00141_source.html deleted file mode 100644 index ec945213..00000000 --- a/doc/api-0.9.2/a00141_source.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -wrap.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
wrap.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2009-11-25
-00005 // Updated : 2009-11-25
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtx/wrap.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtx_wrap
-00014 #define glm_gtx_wrap
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
-00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTX_wrap extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtx{
-00025 namespace wrap 
-00026 {
-00029 
-00032         template <typename genType> 
-00033         genType clamp(genType const & Texcoord);
-00034 
-00037         template <typename genType> 
-00038         genType repeat(genType const & Texcoord);
-00039 
-00042         template <typename genType> 
-00043         genType mirrorRepeat(genType const & Texcoord);
-00044 
-00046 }// namespace wrap
-00047 }// namespace gtx
-00048 }// namespace glm
-00049 
-00050 #include "wrap.inl"
-00051 
-00052 namespace glm{using namespace gtx::wrap;}
-00053 
-00054 #endif//glm_img_wrap
-
-
- - - diff --git a/doc/api-0.9.2/a00142_source.html b/doc/api-0.9.2/a00142_source.html deleted file mode 100644 index 4a48dd9b..00000000 --- a/doc/api-0.9.2/a00142_source.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - -xstream.hpp Source File - - - - - -
-
- - - - - - -
-
- - -
-
-
xstream.hpp
-
-
-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00003 // Virtrev SDK copyright matrem (matrem84.free.fr)
-00005 // Created : 2008-05-24
-00006 // Updated : 2008-05-26
-00007 // Licence : This source is under MIT License
-00008 // File    : glm/ext/virtrev/xstream.hpp
-00010 // Dependency:
-00011 // - GLM core
-00012 // - GLM_GTX_matrix_selection
-00014 
-00015 #ifndef GLM_EXT_VIRTREV_XSTREAM_HPP
-00016 #define GLM_EXT_VIRTREV_XSTREAM_HPP
-00017 
-00018 #include "../glm.hpp"
-00019 #include "../gtc/matrix_access.hpp"
-00020 #include <iostream>
-00021 
-00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00023 #       pragma message("GLM: GLM_VIRTREV_xstream extension included")
-00024 #endif
-00025 
-00026 namespace glm
-00027 {
-00028         namespace virtrev_glmext
-00029         {
-00031                 namespace xstream
-00032                 {
-00033                         template<typename T>
-00034                         std::ostream & operator << (std::ostream & stream, glm::detail::tvec2<T> const & vec)
-00035                         {
-00036                                 stream << "<glm_vec2 ";
-00037                                 stream << "x=\"" << vec.x << "\" ";
-00038                                 stream << "y=\"" << vec.y << "\" ";
-00039                                 stream << "/>";
-00040 
-00041                                 return stream;
-00042                         }
-00043 
-00044                         template<typename T>
-00045                         std::ostream & operator << (std::ostream & stream, glm::detail::tvec3<T> const & vec)
-00046                         {
-00047                                 stream << "<glm_vec3 ";
-00048                                 stream << "x=\"" << vec.x << "\" ";
-00049                                 stream << "y=\"" << vec.y << "\" ";
-00050                                 stream << "z=\"" << vec.z << "\" ";
-00051                                 stream << "/>";
-00052 
-00053                                 return stream;
-00054                         }
-00055 
-00056                         template<typename T>
-00057                         std::ostream & operator << (std::ostream & stream, glm::detail::tvec4<T> const & vec)
-00058                         {
-00059                                 stream << "<glm_vec4 ";
-00060                                 stream << "x=\"" << vec.x << "\" ";
-00061                                 stream << "y=\"" << vec.y << "\" ";
-00062                                 stream << "z=\"" << vec.z << "\" ";
-00063                                 stream << "w=\"" << vec.w << "\" ";
-00064                                 stream << "/>";
-00065 
-00066                                 return stream;
-00067                         }
-00068 
-00069                         template<typename T>
-00070                         std::ostream & operator << (std::ostream & stream, glm::detail::tmat2x2<T> const & mat)
-00071                         {
-00072                                 stream << "<glm_mat2>" << std::endl;
-00073                                 stream << "<row ";
-00074                                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
-00075                                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
-00076                                 stream << "/>" << std::endl;
-00077                                 stream << "<row ";
-00078                                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
-00079                                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
-00080                                 stream << "/>" << std::endl;
-00081                                 stream << "</glm_mat2>";
-00082 
-00083                                 return stream;
-00084                         }
-00085 
-00086                         template<typename T>
-00087                         std::ostream & operator << (std::ostream & stream, glm::detail::tmat3x3<T> const & mat)
-00088                         {
-00089                                 stream << "<glm_mat3>" << std::endl;
-00090                                 stream << "<row ";
-00091                                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
-00092                                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
-00093                                 stream << "z=\"" << glm::row(mat, 0)[2] << "\" ";
-00094                                 stream << "/>" << std::endl;
-00095                                 stream << "<row ";
-00096                                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
-00097                                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
-00098                                 stream << "z=\"" << glm::row(mat, 1)[2] << "\" ";
-00099                                 stream << "/>" << std::endl;
-00100                                 stream << "<row ";
-00101                                 stream << "x=\"" << glm::row(mat, 2)[0] << "\" ";
-00102                                 stream << "y=\"" << glm::row(mat, 2)[1] << "\" ";
-00103                                 stream << "z=\"" << glm::row(mat, 2)[2] << "\" ";
-00104                                 stream << "/>" << std::endl;
-00105                                 stream << "</glm_mat3>";
-00106 
-00107                                 return stream;
-00108                         }
-00109 
-00110                         template<typename T>
-00111                         std::ostream & operator << (std::ostream & stream, glm::detail::tmat4x4<T> const & mat)
-00112                         {
-00113                                 stream << "<glm_mat4>" << std::endl;
-00114                                 stream << "<row ";
-00115                                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
-00116                                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
-00117                                 stream << "z=\"" << glm::row(mat, 0)[2] << "\" ";
-00118                                 stream << "w=\"" << glm::row(mat, 0)[3] << "\" ";
-00119                                 stream << "/>" << std::endl;
-00120                                 stream << "<row ";
-00121                                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
-00122                                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
-00123                                 stream << "z=\"" << glm::row(mat, 1)[2] << "\" ";
-00124                                 stream << "w=\"" << glm::row(mat, 1)[3] << "\" ";
-00125                                 stream << "/>" << std::endl;
-00126                                 stream << "<row ";
-00127                                 stream << "x=\"" << glm::row(mat, 2)[0] << "\" ";
-00128                                 stream << "y=\"" << glm::row(mat, 2)[1] << "\" ";
-00129                                 stream << "z=\"" << glm::row(mat, 2)[2] << "\" ";
-00130                                 stream << "w=\"" << glm::row(mat, 2)[3] << "\" ";
-00131                                 stream << "/>" << std::endl;
-00132                                 stream << "<row ";
-00133                                 stream << "x=\"" << glm::row(mat, 3)[0] << "\" ";
-00134                                 stream << "y=\"" << glm::row(mat, 3)[1] << "\" ";
-00135                                 stream << "z=\"" << glm::row(mat, 3)[2] << "\" ";
-00136                                 stream << "w=\"" << glm::row(mat, 3)[3] << "\" ";
-00137                                 stream << "/>" << std::endl;
-00138                                 stream << "</glm_mat4>";
-00139                         
-00140                                 return stream;
-00141                         }
-00142                 }
-00143         }
-00144 }
-00145 
-00146 namespace glm{using namespace glm::virtrev_glmext::xstream;}
-00147 
-00148 #endif//GLM_EXT_VIRTREV_XSTREAM_HPP
-
-
- - - diff --git a/doc/api-0.9.2/a00143.html b/doc/api-0.9.2/a00143.html deleted file mode 100644 index 80b758e5..00000000 --- a/doc/api-0.9.2/a00143.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - -glm Namespace Reference - - - - - -
-
- - - - - - -
-
- - -
-
- -
-
glm Namespace Reference
-
-
- -

GLM namespace, it contains all GLSL based features. -More...

- - - - - - -

-Namespaces

namespace  core
namespace  gtc
namespace  gtx
namespace  virtrev
-

Detailed Description

-

GLM namespace, it contains all GLSL based features.

-
- - - diff --git a/doc/api-0.9.2/a00144.html b/doc/api-0.9.2/a00144.html deleted file mode 100644 index c0aed059..00000000 --- a/doc/api-0.9.2/a00144.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - -glm::core Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core Namespace Reference
-
-
- -

GLM core. Namespace that includes all the feature define by GLSL 4.10.6 specification. This namespace is included in glm namespace. -More...

- - - - -

-Namespaces

namespace  function
namespace  type
-

Detailed Description

-

GLM core. Namespace that includes all the feature define by GLSL 4.10.6 specification. This namespace is included in glm namespace.

-
- - - diff --git a/doc/api-0.9.2/a00145.html b/doc/api-0.9.2/a00145.html deleted file mode 100644 index 9e32f1b3..00000000 --- a/doc/api-0.9.2/a00145.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - -glm::core::function Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core::function Namespace Reference
-
-
- -

Some of the functions defined in section 8 Built-in Functions of GLSL 1.30.8 specification. -More...

- - - - - - - - -

-Namespaces

namespace  exponential
namespace  integer
namespace  matrix
namespace  packing
namespace  trigonometric
namespace  vector_relational
-

Detailed Description

-

Some of the functions defined in section 8 Built-in Functions of GLSL 1.30.8 specification.

-

Angle and trigonometry, exponential, common, geometric, matrix and vector relational functions.

-
- - - diff --git a/doc/api-0.9.2/a00149.html b/doc/api-0.9.2/a00149.html deleted file mode 100644 index 1e332aee..00000000 --- a/doc/api-0.9.2/a00149.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - -glm::core::function::integer Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core::function::integer Namespace Reference
-
-
- -

Define integer functions from Section 8.8 of GLSL 4.00.8 specification. -More...

- - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , template< typename > class C>
C< T >::signed_type bitCount (C< T > const &Value)
template<typename genIUType >
genIUType bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldReverse (genIUType const &value)
template<typename T , template< typename > class C>
C< T >::signed_type findLSB (C< T > const &Value)
template<typename T , template< typename > class C>
C< T >::signed_type findMSB (C< T > const &Value)
template<typename genIType >
void imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb)
template<typename genUType >
genUType uaddCarry (genUType const &x, genUType const &y, genUType &carry)
template<typename genUType >
void umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb)
template<typename genUType >
genUType usubBorrow (genUType const &x, genUType const &y, genUType &borrow)
-

Detailed Description

-

Define integer functions from Section 8.8 of GLSL 4.00.8 specification.

-
- - - diff --git a/doc/api-0.9.2/a00150.html b/doc/api-0.9.2/a00150.html deleted file mode 100644 index 1873fd50..00000000 --- a/doc/api-0.9.2/a00150.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - -glm::core::function::matrix Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core::function::matrix Namespace Reference
-
-
- -

Define all matrix functions from Section 8.5 of GLSL 1.30.8 specification. Included in glm namespace. -More...

- - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat2x2< T >::value_type determinant (detail::tmat2x2< T > const &m)
template<typename T >
detail::tmat3x3< T >::value_type determinant (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat4x4< T >::value_type determinant (detail::tmat4x4< T > const &m)
template<typename T >
detail::tmat4x4< T > inverse (detail::tmat4x4< T > const &m)
template<typename T >
detail::tmat3x3< T > inverse (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat2x2< T > inverse (detail::tmat2x2< T > const &m)
template<typename matType >
matType matrixCompMult (matType const &x, matType const &y)
template<typename vecType , typename matType >
matType outerProduct (vecType const &c, vecType const &r)
template<typename matType >
matType::transpose_type transpose (matType const &x)
-

Detailed Description

-

Define all matrix functions from Section 8.5 of GLSL 1.30.8 specification. Included in glm namespace.

-
- - - diff --git a/doc/api-0.9.2/a00152.html b/doc/api-0.9.2/a00152.html deleted file mode 100644 index f343f5be..00000000 --- a/doc/api-0.9.2/a00152.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -glm::core::function::packing Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core::function::packing Namespace Reference
-
-
- -

Define packing functions from section 8.4 floating-point pack and unpack functions of GLSL 4.00.8 specification. -More...

- - - - - - - - - - -

-Functions

double packDouble2x32 (detail::tvec2< detail::uint32 > const &v)
detail::uint32 packSnorm4x8 (detail::tvec4< detail::float32 > const &v)
detail::uint32 packUnorm2x16 (detail::tvec2< detail::float32 > const &v)
detail::uint32 packUnorm4x8 (detail::tvec4< detail::float32 > const &v)
detail::tvec2< detail::uint32 > unpackDouble2x32 (double const &v)
detail::tvec4< detail::float32 > unpackSnorm4x8 (detail::uint32 const &p)
detail::tvec2< detail::float32 > unpackUnorm2x16 (detail::uint32 const &p)
detail::tvec4< detail::float32 > unpackUnorm4x8 (detail::uint32 const &p)
-

Detailed Description

-

Define packing functions from section 8.4 floating-point pack and unpack functions of GLSL 4.00.8 specification.

-
- - - diff --git a/doc/api-0.9.2/a00154.html b/doc/api-0.9.2/a00154.html deleted file mode 100644 index b8096c14..00000000 --- a/doc/api-0.9.2/a00154.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -glm::core::function::vector_relational Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core::function::vector_relational Namespace Reference
-
-
- -

Define vector relational functions from Section 8.6 of GLSL 1.30.8 specification. -More...

- - - - - - - - - - - - - - - - - - - - -

-Functions

template<template< typename > class vecType>
GLM_FUNC_QUALIFIER bool all (vecType< bool > const &v)
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER bool any (vecType< bool > const &v)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
equal (vecType< T > const &x, vecType< T > const &y)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
greaterThan (vecType< T > const &x, vecType< T > const &y)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
greaterThanEqual (vecType< T > const &x, vecType< T > const &y)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
lessThan (vecType< T > const &x, vecType< T > const &y)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
lessThanEqual (vecType< T > const &x, vecType< T > const &y)
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< bool > not_ (vecType< bool > const &v)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
notEqual (vecType< T > const &x, vecType< T > const &y)
-

Detailed Description

-

Define vector relational functions from Section 8.6 of GLSL 1.30.8 specification.

-

Included in glm namespace.

-
- - - diff --git a/doc/api-0.9.2/a00155.html b/doc/api-0.9.2/a00155.html deleted file mode 100644 index f2ab5455..00000000 --- a/doc/api-0.9.2/a00155.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - -glm::core::type Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core::type Namespace Reference
-
-
- -

Scalar, vectors and matrices from section 4.1.2 Booleans, 4.1.3 Integers section, 4.1.4 Floats section, 4.1.5 Vectors and section 4.1.6 Matrices of GLSL 1.30.8 specification. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Namespaces

namespace  precision

-Typedefs

typedef detail::tvec2< bool > bvec2
typedef detail::tvec3< bool > bvec3
typedef detail::tvec4< bool > bvec4
typedef detail::tmat2x2< double > dmat2
typedef detail::tmat2x2< double > dmat2x2
typedef detail::tmat2x3< double > dmat2x3
typedef detail::tmat2x4< double > dmat2x4
typedef detail::tmat3x3< double > dmat3
typedef detail::tmat3x2< double > dmat3x2
typedef detail::tmat3x3< double > dmat3x3
typedef detail::tmat3x4< double > dmat3x4
typedef detail::tmat4x4< double > dmat4
typedef detail::tmat4x2< double > dmat4x2
typedef detail::tmat4x3< double > dmat4x3
typedef detail::tmat4x4< double > dmat4x4
typedef detail::tvec2< double > dvec2
typedef detail::tvec3< double > dvec3
typedef detail::tvec4< double > dvec4
typedef precision::mediump_ivec2 ivec2
typedef precision::mediump_ivec3 ivec3
typedef precision::mediump_ivec4 ivec4
typedef mat2x2 mat2
typedef precision::mediump_mat2x2 mat2x2
typedef precision::mediump_mat2x3 mat2x3
typedef precision::mediump_mat2x4 mat2x4
typedef mat3x3 mat3
typedef precision::mediump_mat3x2 mat3x2
typedef precision::mediump_mat3x3 mat3x3
typedef precision::mediump_mat3x4 mat3x4
typedef mat4x4 mat4
typedef precision::mediump_mat4x2 mat4x2
typedef precision::mediump_mat4x3 mat4x3
typedef precision::mediump_mat4x4 mat4x4
typedef uint_t uint
typedef precision::mediump_uvec2 uvec2
typedef precision::mediump_uvec3 uvec3
typedef precision::mediump_uvec4 uvec4
typedef precision::mediump_vec2 vec2
typedef precision::mediump_vec3 vec3
typedef precision::mediump_vec4 vec4
-

Detailed Description

-

Scalar, vectors and matrices from section 4.1.2 Booleans, 4.1.3 Integers section, 4.1.4 Floats section, 4.1.5 Vectors and section 4.1.6 Matrices of GLSL 1.30.8 specification.

-

This namespace resolves precision qualifier define in section 4.5 of GLSL 1.30.8 specification.

-

Typedef Documentation

- -
-
- - - - -
typedef uint_t uint
-
-
- -

Unsigned integer.

-

From GLSL 1.30.8 specification section 4.1.3 Integers.

- -

Definition at line 103 of file type_int.hpp.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00156.html b/doc/api-0.9.2/a00156.html deleted file mode 100644 index c40f7631..00000000 --- a/doc/api-0.9.2/a00156.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - -glm::core::type::precision Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::core::type::precision Namespace Reference
-
-
- -

< Namespace for precision stuff. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef highp_float_t highp_float
typedef detail::highp_int_t highp_int
typedef detail::tvec2< highp_inthighp_ivec2
typedef detail::tvec3< highp_inthighp_ivec3
typedef detail::tvec4< highp_inthighp_ivec4
typedef detail::tmat2x2
-< highp_float
highp_mat2
typedef detail::tmat2x2
-< highp_float
highp_mat2x2
typedef detail::tmat2x3
-< highp_float
highp_mat2x3
typedef detail::tmat2x4
-< highp_float
highp_mat2x4
typedef detail::tmat3x3
-< highp_float
highp_mat3
typedef detail::tmat3x2
-< highp_float
highp_mat3x2
typedef detail::tmat3x3
-< highp_float
highp_mat3x3
typedef detail::tmat3x4
-< highp_float
highp_mat3x4
typedef detail::tmat4x4
-< highp_float
highp_mat4
typedef detail::tmat4x2
-< highp_float
highp_mat4x2
typedef detail::tmat4x3
-< highp_float
highp_mat4x3
typedef detail::tmat4x4
-< highp_float
highp_mat4x4
typedef detail::highp_uint_t highp_uint
typedef detail::tvec2< highp_uinthighp_uvec2
typedef detail::tvec3< highp_uinthighp_uvec3
typedef detail::tvec4< highp_uinthighp_uvec4
typedef detail::tvec2
-< highp_float
highp_vec2
typedef detail::tvec3
-< highp_float
highp_vec3
typedef detail::tvec4
-< highp_float
highp_vec4
typedef lowp_float_t lowp_float
typedef detail::lowp_int_t lowp_int
typedef detail::tvec2< lowp_intlowp_ivec2
typedef detail::tvec3< lowp_intlowp_ivec3
typedef detail::tvec4< lowp_intlowp_ivec4
typedef detail::tmat2x2
-< lowp_float
lowp_mat2
typedef detail::tmat2x2
-< lowp_float
lowp_mat2x2
typedef detail::tmat2x3
-< lowp_float
lowp_mat2x3
typedef detail::tmat2x4
-< lowp_float
lowp_mat2x4
typedef detail::tmat3x3
-< lowp_float
lowp_mat3
typedef detail::tmat3x2
-< lowp_float
lowp_mat3x2
typedef detail::tmat3x3
-< lowp_float
lowp_mat3x3
typedef detail::tmat3x4
-< lowp_float
lowp_mat3x4
typedef detail::tmat4x4
-< lowp_float
lowp_mat4
typedef detail::tmat4x2
-< lowp_float
lowp_mat4x2
typedef detail::tmat4x3
-< lowp_float
lowp_mat4x3
typedef detail::tmat4x4
-< lowp_float
lowp_mat4x4
typedef detail::lowp_uint_t lowp_uint
typedef detail::tvec2< lowp_uintlowp_uvec2
typedef detail::tvec3< lowp_uintlowp_uvec3
typedef detail::tvec4< lowp_uintlowp_uvec4
typedef detail::tvec2< lowp_floatlowp_vec2
typedef detail::tvec3< lowp_floatlowp_vec3
typedef detail::tvec4< lowp_floatlowp_vec4
typedef mediump_float_t mediump_float
typedef detail::mediump_int_t mediump_int
typedef detail::tvec2
-< mediump_int
mediump_ivec2
typedef detail::tvec3
-< mediump_int
mediump_ivec3
typedef detail::tvec4
-< mediump_int
mediump_ivec4
typedef detail::tmat2x2
-< mediump_float
mediump_mat2
typedef detail::tmat2x2
-< mediump_float
mediump_mat2x2
typedef detail::tmat2x3
-< mediump_float
mediump_mat2x3
typedef detail::tmat2x4
-< mediump_float
mediump_mat2x4
typedef detail::tmat3x3
-< mediump_float
mediump_mat3
typedef detail::tmat3x2
-< mediump_float
mediump_mat3x2
typedef detail::tmat3x3
-< mediump_float
mediump_mat3x3
typedef detail::tmat3x4
-< mediump_float
mediump_mat3x4
typedef detail::tmat4x4
-< mediump_float
mediump_mat4
typedef detail::tmat4x2
-< mediump_float
mediump_mat4x2
typedef detail::tmat4x3
-< mediump_float
mediump_mat4x3
typedef detail::tmat4x4
-< mediump_float
mediump_mat4x4
typedef detail::mediump_uint_t mediump_uint
typedef detail::tvec2
-< mediump_uint
mediump_uvec2
typedef detail::tvec3
-< mediump_uint
mediump_uvec3
typedef detail::tvec4
-< mediump_uint
mediump_uvec4
typedef detail::tvec2
-< mediump_float
mediump_vec2
typedef detail::tvec3
-< mediump_float
mediump_vec3
typedef detail::tvec4
-< mediump_float
mediump_vec4
-

Detailed Description

-

< Namespace for precision stuff.

-

Typedef Documentation

- -
- -
- -

2 columns of 4 components matrix of high precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 215 of file type_mat2x4.hpp.

- -
-
- -
- -
- -

3 columns of 2 components matrix of high precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 221 of file type_mat3x2.hpp.

- -
-
- -
- -
- -

3 columns of 4 components matrix of high precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 221 of file type_mat3x4.hpp.

- -
-
- -
-
- - - - -
typedef detail::tmat2x4<lowp_float> lowp_mat2x4
-
-
- -

2 columns of 4 components matrix of low precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 207 of file type_mat2x4.hpp.

- -
-
- -
-
- - - - -
typedef detail::tmat3x2<lowp_float> lowp_mat3x2
-
-
- -

3 columns of 2 components matrix of low precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 213 of file type_mat3x2.hpp.

- -
-
- -
-
- - - - -
typedef detail::tmat3x4<lowp_float> lowp_mat3x4
-
-
- -

3 columns of 4 components matrix of low precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 213 of file type_mat3x4.hpp.

- -
-
- -
- -
- -

2 columns of 4 components matrix of medium precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 211 of file type_mat2x4.hpp.

- -
-
- -
- -
- -

3 columns of 2 components matrix of medium precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 217 of file type_mat3x2.hpp.

- -
-
- -
- -
- -

3 columns of 4 components matrix of medium precision floating-point numbers.

-

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

- -

Definition at line 217 of file type_mat3x4.hpp.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00158.html b/doc/api-0.9.2/a00158.html deleted file mode 100644 index 8b8edaa4..00000000 --- a/doc/api-0.9.2/a00158.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -glm::gtc Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc Namespace Reference
-
-
- -

G-Truc Creation stable extensions. -More...

- - - - - - - - - - - -

-Namespaces

namespace  half_float
namespace  matrix_access
namespace  matrix_integer
namespace  matrix_inverse
namespace  matrix_transform
namespace  quaternion
namespace  swizzle
namespace  type_precision
namespace  type_ptr
-

Detailed Description

-

G-Truc Creation stable extensions.

-
- - - diff --git a/doc/api-0.9.2/a00159.html b/doc/api-0.9.2/a00159.html deleted file mode 100644 index 4a84abf4..00000000 --- a/doc/api-0.9.2/a00159.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -glm::gtc::half_float Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::half_float Namespace Reference
-
-
- -

< GLM_GTC_half_float extension: Add support for half precision floating-point types -More...

- - - - - - - - - - - - - - - - - - -

-Typedefs

typedef detail::thalf half
typedef detail::tmat2x2
-< detail::thalf
hmat2
typedef detail::tmat2x2
-< detail::thalf
hmat2x2
typedef detail::tmat2x3
-< detail::thalf
hmat2x3
typedef detail::tmat2x4
-< detail::thalf
hmat2x4
typedef detail::tmat3x3
-< detail::thalf
hmat3
typedef detail::tmat3x2
-< detail::thalf
hmat3x2
typedef detail::tmat3x3
-< detail::thalf
hmat3x3
typedef detail::tmat3x4
-< detail::thalf
hmat3x4
typedef detail::tmat4x4
-< detail::thalf
hmat4
typedef detail::tmat4x2
-< detail::thalf
hmat4x2
typedef detail::tmat4x3
-< detail::thalf
hmat4x3
typedef detail::tmat4x4
-< detail::thalf
hmat4x4
typedef detail::tvec2
-< detail::thalf
hvec2
typedef detail::tvec3
-< detail::thalf
hvec3
typedef detail::tvec4
-< detail::thalf
hvec4
-

Detailed Description

-

< GLM_GTC_half_float extension: Add support for half precision floating-point types

-
- - - diff --git a/doc/api-0.9.2/a00160.html b/doc/api-0.9.2/a00160.html deleted file mode 100644 index 4c7b306b..00000000 --- a/doc/api-0.9.2/a00160.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -glm::gtc::matrix_access Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::matrix_access Namespace Reference
-
-
- -

< GLM_GTC_matrix_access extension: Set a column or a row of a matrix -More...

- - - - - - - - - - -

-Functions

template<typename genType >
genType::col_type column (genType const &m, int index)
template<typename genType >
genType column (genType const &m, int index, typename genType::col_type const &x)
template<typename genType >
genType::row_type row (genType const &m, int index)
template<typename genType >
genType row (genType const &m, int index, typename genType::row_type const &x)
-

Detailed Description

-

< GLM_GTC_matrix_access extension: Set a column or a row of a matrix

-
- - - diff --git a/doc/api-0.9.2/a00161.html b/doc/api-0.9.2/a00161.html deleted file mode 100644 index f750ab8d..00000000 --- a/doc/api-0.9.2/a00161.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - -glm::gtc::matrix_integer Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::matrix_integer Namespace Reference
-
-
- -

< GLM_GTC_matrix_integer extension: Add integer matrices -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef detail::tmat2x2
-< highp_int
highp_imat2
-typedef detail::tmat2x2
-< highp_int
highp_imat2x2
-typedef detail::tmat2x3
-< highp_int
highp_imat2x3
-typedef detail::tmat2x4
-< highp_int
highp_imat2x4
-typedef detail::tmat3x3
-< highp_int
highp_imat3
-typedef detail::tmat3x2
-< highp_int
highp_imat3x2
-typedef detail::tmat3x3
-< highp_int
highp_imat3x3
-typedef detail::tmat3x4
-< highp_int
highp_imat3x4
-typedef detail::tmat4x4
-< highp_int
highp_imat4
-typedef detail::tmat4x2
-< highp_int
highp_imat4x2
-typedef detail::tmat4x3
-< highp_int
highp_imat4x3
-typedef detail::tmat4x4
-< highp_int
highp_imat4x4
-typedef detail::tmat2x2
-< highp_uint
highp_umat2
-typedef detail::tmat2x2
-< highp_uint
highp_umat2x2
-typedef detail::tmat2x3
-< highp_uint
highp_umat2x3
-typedef detail::tmat2x4
-< highp_uint
highp_umat2x4
-typedef detail::tmat3x3
-< highp_uint
highp_umat3
-typedef detail::tmat3x2
-< highp_uint
highp_umat3x2
-typedef detail::tmat3x3
-< highp_uint
highp_umat3x3
-typedef detail::tmat3x4
-< highp_uint
highp_umat3x4
-typedef detail::tmat4x4
-< highp_uint
highp_umat4
-typedef detail::tmat4x2
-< highp_uint
highp_umat4x2
-typedef detail::tmat4x3
-< highp_uint
highp_umat4x3
-typedef detail::tmat4x4
-< highp_uint
highp_umat4x4
-typedef mediump_imat2 imat2
-typedef mediump_imat2x2 imat2x2
-typedef mediump_imat2x3 imat2x3
-typedef mediump_imat2x4 imat2x4
-typedef mediump_imat3 imat3
-typedef mediump_imat3x2 imat3x2
-typedef mediump_imat3x3 imat3x3
-typedef mediump_imat3x4 imat3x4
-typedef mediump_imat4 imat4
-typedef mediump_imat4x2 imat4x2
-typedef mediump_imat4x3 imat4x3
-typedef mediump_imat4x4 imat4x4
-typedef detail::tmat2x2< lowp_intlowp_imat2
-typedef detail::tmat2x2< lowp_intlowp_imat2x2
-typedef detail::tmat2x3< lowp_intlowp_imat2x3
-typedef detail::tmat2x4< lowp_intlowp_imat2x4
-typedef detail::tmat3x3< lowp_intlowp_imat3
-typedef detail::tmat3x2< lowp_intlowp_imat3x2
-typedef detail::tmat3x3< lowp_intlowp_imat3x3
-typedef detail::tmat3x4< lowp_intlowp_imat3x4
-typedef detail::tmat4x4< lowp_intlowp_imat4
-typedef detail::tmat4x2< lowp_intlowp_imat4x2
-typedef detail::tmat4x3< lowp_intlowp_imat4x3
-typedef detail::tmat4x4< lowp_intlowp_imat4x4
-typedef detail::tmat2x2
-< lowp_uint
lowp_umat2
-typedef detail::tmat2x2
-< lowp_uint
lowp_umat2x2
-typedef detail::tmat2x3
-< lowp_uint
lowp_umat2x3
-typedef detail::tmat2x4
-< lowp_uint
lowp_umat2x4
-typedef detail::tmat3x3
-< lowp_uint
lowp_umat3
-typedef detail::tmat3x2
-< lowp_uint
lowp_umat3x2
-typedef detail::tmat3x3
-< lowp_uint
lowp_umat3x3
-typedef detail::tmat3x4
-< lowp_uint
lowp_umat3x4
-typedef detail::tmat4x4
-< lowp_uint
lowp_umat4
-typedef detail::tmat4x2
-< lowp_uint
lowp_umat4x2
-typedef detail::tmat4x3
-< lowp_uint
lowp_umat4x3
-typedef detail::tmat4x4
-< lowp_uint
lowp_umat4x4
-typedef detail::tmat2x2
-< mediump_int
mediump_imat2
-typedef detail::tmat2x2
-< mediump_int
mediump_imat2x2
-typedef detail::tmat2x3
-< mediump_int
mediump_imat2x3
-typedef detail::tmat2x4
-< mediump_int
mediump_imat2x4
-typedef detail::tmat3x3
-< mediump_int
mediump_imat3
-typedef detail::tmat3x2
-< mediump_int
mediump_imat3x2
-typedef detail::tmat3x3
-< mediump_int
mediump_imat3x3
-typedef detail::tmat3x4
-< mediump_int
mediump_imat3x4
-typedef detail::tmat4x4
-< mediump_int
mediump_imat4
-typedef detail::tmat4x2
-< mediump_int
mediump_imat4x2
-typedef detail::tmat4x3
-< mediump_int
mediump_imat4x3
-typedef detail::tmat4x4
-< mediump_int
mediump_imat4x4
-typedef detail::tmat2x2
-< mediump_uint
mediump_umat2
-typedef detail::tmat2x2
-< mediump_uint
mediump_umat2x2
-typedef detail::tmat2x3
-< mediump_uint
mediump_umat2x3
-typedef detail::tmat2x4
-< mediump_uint
mediump_umat2x4
-typedef detail::tmat3x3
-< mediump_uint
mediump_umat3
-typedef detail::tmat3x2
-< mediump_uint
mediump_umat3x2
-typedef detail::tmat3x3
-< mediump_uint
mediump_umat3x3
-typedef detail::tmat3x4
-< mediump_uint
mediump_umat3x4
-typedef detail::tmat4x4
-< mediump_uint
mediump_umat4
-typedef detail::tmat4x2
-< mediump_uint
mediump_umat4x2
-typedef detail::tmat4x3
-< mediump_uint
mediump_umat4x3
-typedef detail::tmat4x4
-< mediump_uint
mediump_umat4x4
-typedef mediump_umat2 umat2
-typedef mediump_umat2x2 umat2x2
-typedef mediump_umat2x3 umat2x3
-typedef mediump_umat2x4 umat2x4
-typedef mediump_umat3 umat3
-typedef mediump_umat3x2 umat3x2
-typedef mediump_umat3x3 umat3x3
-typedef mediump_umat3x4 umat3x4
-typedef mediump_umat4 umat4
-typedef mediump_umat4x2 umat4x2
-typedef mediump_umat4x3 umat4x3
-typedef mediump_umat4x4 umat4x4
-

Detailed Description

-

< GLM_GTC_matrix_integer extension: Add integer matrices

-
- - - diff --git a/doc/api-0.9.2/a00162.html b/doc/api-0.9.2/a00162.html deleted file mode 100644 index 3b6c8092..00000000 --- a/doc/api-0.9.2/a00162.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - -glm::gtc::matrix_inverse Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::matrix_inverse Namespace Reference
-
-
- -

< GLM_GTC_matrix_inverse extension: Inverse matrix functions -More...

- - - - - - -

-Functions

template<typename genType >
genType affineInverse (genType const &m)
template<typename genType >
GLM_FUNC_QUALIFIER
-genType::value_type 
inverseTranspose (genType const &m)
-

Detailed Description

-

< GLM_GTC_matrix_inverse extension: Inverse matrix functions

-
- - - diff --git a/doc/api-0.9.2/a00163.html b/doc/api-0.9.2/a00163.html deleted file mode 100644 index aa651a9c..00000000 --- a/doc/api-0.9.2/a00163.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -glm::gtc::matrix_transform Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::matrix_transform Namespace Reference
-
-
- -

< GLM_GTC_matrix_transform extension: Add transformation matrices -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat4x4< T > frustum (T const &left, T const &right, T const &bottom, T const &top, T const &nearVal, T const &farVal)
template<typename T >
detail::tmat4x4< T > infinitePerspective (T fovy, T aspect, T zNear)
template<typename T >
detail::tmat4x4< T > lookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const &center, detail::tvec3< T > const &up)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top, T const &zNear, T const &zFar)
template<typename T >
detail::tmat4x4< T > perspective (T const &fovy, T const &aspect, T const &zNear, T const &zFar)
template<typename valType >
detail::tmat4x4< valType > perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &zNear, valType const &zFar)
template<typename T , typename U >
detail::tmat4x4< T > pickMatrix (detail::tvec2< T > const &center, detail::tvec2< T > const &delta, detail::tvec4< U > const &viewport)
template<typename T , typename U >
detail::tvec3< T > project (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
template<typename T >
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > tweakedInfinitePerspective (T fovy, T aspect, T zNear)
template<typename T , typename U >
detail::tvec3< T > unProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
-

Detailed Description

-

< GLM_GTC_matrix_transform extension: Add transformation matrices

-
- - - diff --git a/doc/api-0.9.2/a00164.html b/doc/api-0.9.2/a00164.html deleted file mode 100644 index 768d65ca..00000000 --- a/doc/api-0.9.2/a00164.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -glm::gtc::quaternion Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::quaternion Namespace Reference
-
-
- -

< GLM_GTC_quaternion extension: Quaternion types and functions -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef detail::tquat< double > dquat
typedef detail::tquat< float > fquat
typedef detail::tquat
-< highp_float
highp_quat
typedef detail::tquat
-< detail::thalf
hquat
typedef detail::tquat< lowp_floatlowp_quat
typedef detail::tquat
-< mediump_float
mediump_quat
typedef detail::tquat< float > quat

-Functions

template<typename T >
detail::tquat< T > conjugate (detail::tquat< T > const &q)
template<typename T >
GLM_DEPRECATED detail::tquat< T > cross (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
template<typename T >
detail::tquat< T >::value_type dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
template<typename T >
detail::tquat< T > inverse (detail::tquat< T > const &q)
template<typename T >
detail::tquat< T >::value_type length (detail::tquat< T > const &q)
template<typename T >
detail::tmat3x3< T > mat3_cast (detail::tquat< T > const &x)
template<typename T >
detail::tmat4x4< T > mat4_cast (detail::tquat< T > const &x)
template<typename T >
detail::tquat< T > mix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename T >
detail::tquat< T > normalize (detail::tquat< T > const &q)
template<typename T >
detail::tquat< T > quat_cast (detail::tmat4x4< T > const &x)
template<typename T >
detail::tquat< T > quat_cast (detail::tmat3x3< T > const &x)
template<typename T >
detail::tquat< T > rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v)
-

Detailed Description

-

< GLM_GTC_quaternion extension: Quaternion types and functions

-
- - - diff --git a/doc/api-0.9.2/a00165.html b/doc/api-0.9.2/a00165.html deleted file mode 100644 index 80668e5c..00000000 --- a/doc/api-0.9.2/a00165.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - -glm::gtc::swizzle Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
-
-
glm::gtc::swizzle Namespace Reference
-
-
- -

< GLM_GTC_swizzle extension -More...

- -
-

Detailed Description

-

< GLM_GTC_swizzle extension

-
- - - diff --git a/doc/api-0.9.2/a00166.html b/doc/api-0.9.2/a00166.html deleted file mode 100644 index 0784c2c0..00000000 --- a/doc/api-0.9.2/a00166.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - -glm::gtc::type_precision Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::type_precision Namespace Reference
-
-
- -

< GLM_GTC_type_precision extension: Defined types with specific size. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef float16 f16
-typedef detail::tmat2x2< f16f16mat2
-typedef detail::tmat2x2< f16f16mat2x2
-typedef detail::tmat2x3< f16f16mat2x3
-typedef detail::tmat2x4< f16f16mat2x4
-typedef detail::tmat3x3< f16f16mat3
-typedef detail::tmat3x2< f16f16mat3x2
-typedef detail::tmat3x3< f16f16mat3x3
-typedef detail::tmat3x4< f16f16mat3x4
-typedef detail::tmat4x4< f16f16mat4
-typedef detail::tmat4x2< f16f16mat4x2
-typedef detail::tmat4x3< f16f16mat4x3
-typedef detail::tmat4x4< f16f16mat4x4
-typedef detail::tquat< f16f16quat
-typedef detail::tvec2< f16f16vec2
-typedef detail::tvec3< f16f16vec3
-typedef detail::tvec4< f16f16vec4
-typedef float32 f32
-typedef detail::tmat2x2< f32f32mat2
-typedef detail::tmat2x2< f32f32mat2x2
-typedef detail::tmat2x3< f32f32mat2x3
-typedef detail::tmat2x4< f32f32mat2x4
-typedef detail::tmat3x3< f32f32mat3
-typedef detail::tmat3x2< f32f32mat3x2
-typedef detail::tmat3x3< f32f32mat3x3
-typedef detail::tmat3x4< f32f32mat3x4
-typedef detail::tmat4x4< f32f32mat4
-typedef detail::tmat4x2< f32f32mat4x2
-typedef detail::tmat4x3< f32f32mat4x3
-typedef detail::tmat4x4< f32f32mat4x4
-typedef detail::tquat< f32f32quat
-typedef detail::tvec2< f32f32vec2
-typedef detail::tvec3< f32f32vec3
-typedef detail::tvec4< f32f32vec4
-typedef float64 f64
-typedef detail::tmat2x2< f64f64mat2
-typedef detail::tmat2x2< f64f64mat2x2
-typedef detail::tmat2x3< f64f64mat2x3
-typedef detail::tmat2x4< f64f64mat2x4
-typedef detail::tmat3x3< f64f64mat3
-typedef detail::tmat3x2< f64f64mat3x2
-typedef detail::tmat3x3< f64f64mat3x3
-typedef detail::tmat3x4< f64f64mat3x4
-typedef detail::tmat4x4< f64f64mat4
-typedef detail::tmat4x2< f64f64mat4x2
-typedef detail::tmat4x3< f64f64mat4x3
-typedef detail::tmat4x4< f64f64mat4x4
-typedef detail::tquat< f64f64quat
-typedef detail::tvec2< f64f64vec2
-typedef detail::tvec3< f64f64vec3
-typedef detail::tvec4< f64f64vec4
-typedef detail::float16 float16
-typedef detail::float32 float32
-typedef detail::float64 float64
-typedef detail::tmat2x2< f32fmat2
-typedef detail::tmat2x2< f32fmat2x2
-typedef detail::tmat2x3< f32fmat2x3
-typedef detail::tmat2x4< f32fmat2x4
-typedef detail::tmat3x3< f32fmat3
-typedef detail::tmat3x2< f32fmat3x2
-typedef detail::tmat3x3< f32fmat3x3
-typedef detail::tmat3x4< f32fmat3x4
-typedef detail::tmat4x4< f32fmat4
-typedef detail::tmat4x2< f32fmat4x2
-typedef detail::tmat4x3< f32fmat4x3
-typedef detail::tmat4x4< f32fmat4x4
-typedef detail::tvec2< float > fvec2
-typedef detail::tvec3< float > fvec3
-typedef detail::tvec4< float > fvec4
-typedef int16 i16
-typedef detail::tvec2< i16i16vec2
-typedef detail::tvec3< i16i16vec3
-typedef detail::tvec4< i16i16vec4
-typedef int32 i32
-typedef detail::tvec2< i32i32vec2
-typedef detail::tvec3< i32i32vec3
-typedef detail::tvec4< i32i32vec4
-typedef int64 i64
-typedef detail::tvec2< i64i64vec2
-typedef detail::tvec3< i64i64vec3
-typedef detail::tvec4< i64i64vec4
-typedef int8 i8
-typedef detail::tvec2< i8i8vec2
-typedef detail::tvec3< i8i8vec3
-typedef detail::tvec4< i8i8vec4
-typedef detail::int16 int16
-typedef detail::int32 int32
-typedef detail::int64 int64
-typedef detail::int8 int8
-typedef uint16 u16
-typedef detail::tvec2< u16u16vec2
-typedef detail::tvec3< u16u16vec3
-typedef detail::tvec4< u16u16vec4
-typedef uint32 u32
-typedef detail::tvec2< u32u32vec2
-typedef detail::tvec3< u32u32vec3
-typedef detail::tvec4< u32u32vec4
-typedef uint64 u64
-typedef detail::tvec2< u64u64vec2
-typedef detail::tvec3< u64u64vec3
-typedef detail::tvec4< u64u64vec4
-typedef uint8 u8
-typedef detail::tvec2< u8u8vec2
-typedef detail::tvec3< u8u8vec3
-typedef detail::tvec4< u8u8vec4
-typedef detail::uint16 uint16
-typedef detail::uint32 uint32
-typedef detail::uint64 uint64
-typedef detail::uint8 uint8
-

Detailed Description

-

< GLM_GTC_type_precision extension: Defined types with specific size.

-
- - - diff --git a/doc/api-0.9.2/a00167.html b/doc/api-0.9.2/a00167.html deleted file mode 100644 index 9d397faa..00000000 --- a/doc/api-0.9.2/a00167.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - -glm::gtc::type_ptr Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtc::type_ptr Namespace Reference
-
-
- -

< GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x2< T > 
make_mat2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x2< T > 
make_mat2x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x3< T > 
make_mat2x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x4< T > 
make_mat2x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x3< T > 
make_mat3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x2< T > 
make_mat3x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x3< T > 
make_mat3x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x4< T > 
make_mat3x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x4< T > 
make_mat4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x2< T > 
make_mat4x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x3< T > 
make_mat4x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x4< T > 
make_mat4x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
make_vec2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
make_vec3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
make_vec4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec3< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec2< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec2< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec4< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec3< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec4< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x2< T > const &mat)
-

Detailed Description

-

< GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address.

-
- - - diff --git a/doc/api-0.9.2/a00168.html b/doc/api-0.9.2/a00168.html deleted file mode 100644 index 9c4e03fd..00000000 --- a/doc/api-0.9.2/a00168.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - -glm::gtx Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx Namespace Reference
-
-
- -

G-Truc Creation experimental extensions. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Namespaces

namespace  associated_min_max
namespace  bit
namespace  closest_point
namespace  color_cast
namespace  color_space
namespace  color_space_YCoCg
namespace  compatibility
namespace  component_wise
namespace  epsilon
namespace  euler_angles
namespace  extend
namespace  extented_min_max
namespace  fast_exponential
namespace  fast_square_root
namespace  fast_trigonometry
namespace  gradient_paint
namespace  handed_coordinate_space
namespace  inertia
namespace  int_10_10_10_2
namespace  integer
namespace  intersect
namespace  log_base
namespace  matrix_cross_product
namespace  matrix_interpolation
namespace  matrix_major_storage
namespace  matrix_operation
namespace  matrix_query
namespace  mixed_product
namespace  multiple
namespace  noise
namespace  norm
namespace  normal
namespace  normalize_dot
namespace  number_precision
namespace  ocl_type
namespace  optimum_pow
namespace  orthonormalize
namespace  perpendicular
namespace  polar_coordinates
namespace  projection
namespace  quaternion
namespace  random
namespace  raw_data
namespace  reciprocal
namespace  rotate_vector
namespace  simd_mat4
namespace  simd_vec4
namespace  spline
namespace  std_based_type
namespace  string_cast
namespace  transform
namespace  transform2
namespace  ulp
namespace  unsigned_int
namespace  vector_access
namespace  vector_angle
namespace  vector_query
namespace  verbose_operator
namespace  wrap
-

Detailed Description

-

G-Truc Creation experimental extensions.

-

The interface could change between releases.

-
- - - diff --git a/doc/api-0.9.2/a00169.html b/doc/api-0.9.2/a00169.html deleted file mode 100644 index 681dabf8..00000000 --- a/doc/api-0.9.2/a00169.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -glm::gtx::associated_min_max Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::associated_min_max Namespace Reference
-
-
- -

< GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces. -More...

- - - - - - - - - - - - - - -

-Functions

-template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
-template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
-template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
-template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
-template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
-template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
-

Detailed Description

-

< GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces.

-
- - - diff --git a/doc/api-0.9.2/a00170.html b/doc/api-0.9.2/a00170.html deleted file mode 100644 index 359b6e16..00000000 --- a/doc/api-0.9.2/a00170.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -glm::gtx::bit Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::bit Namespace Reference
-
-
- -

< GLM_GTX_bit extension: Allow to perform bit operations on integer values -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
genType bitRevert (genType const &value)
template<typename genType >
genType bitRotateLeft (genType const &In, std::size_t Shift)
template<typename genType >
genType bitRotateRight (genType const &In, std::size_t Shift)
template<typename genIUType , typename sizeType >
genIUType extractField (genIUType const &v, sizeType const &first, sizeType const &count)
template<typename genType >
int highestBit (genType const &value)
template<typename genType >
genType highestBitValue (genType const &value)
template<typename genType >
bool isPowerOfTwo (genType const &value)
template<typename genType >
int lowestBit (genType const &value)
template<typename genIType >
genIType mask (genIType const &count)
template<typename genType >
genType powerOfTwoAbove (genType const &value)
template<typename genType >
genType powerOfTwoBelow (genType const &value)
template<typename genType >
genType powerOfTwoNearest (genType const &value)
-

Detailed Description

-

< GLM_GTX_bit extension: Allow to perform bit operations on integer values

-
- - - diff --git a/doc/api-0.9.2/a00171.html b/doc/api-0.9.2/a00171.html deleted file mode 100644 index 33f91a83..00000000 --- a/doc/api-0.9.2/a00171.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - -glm::gtx::closest_point Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::closest_point Namespace Reference
-
-
- -

< GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point. -More...

- - - - -

-Functions

template<typename T >
detail::tvec3< T > closestPointOnLine (detail::tvec3< T > const &point, detail::tvec3< T > const &a, detail::tvec3< T > const &b)
-

Detailed Description

-

< GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point.

-
- - - diff --git a/doc/api-0.9.2/a00172.html b/doc/api-0.9.2/a00172.html deleted file mode 100644 index 17aac717..00000000 --- a/doc/api-0.9.2/a00172.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - -glm::gtx::color_cast Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::color_cast Namespace Reference
-
-
- -

< GLM_GTX_color_cast extension: Conversion between two color types -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-template<typename T >
gtc::type_precision::f16vec4 f16_abgr_cast (T c)
-template<typename T >
gtc::type_precision::f16vec4 f16_argb_cast (T c)
-template<typename T >
gtc::type_precision::f16vec4 f16_bgra_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_bgrx_cast (T c)
-template<typename T >
gtx::number_precision::f16vec1 f16_channel_cast (T a)
-template<typename T >
gtc::type_precision::f16vec4 f16_rgba_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_rgbx_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_xbgr_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_xrgb_cast (T c)
-template<typename T >
gtc::type_precision::f32vec4 f32_abgr_cast (T c)
-template<typename T >
gtc::type_precision::f32vec4 f32_argb_cast (T c)
-template<typename T >
gtc::type_precision::f32vec4 f32_bgra_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_bgrx_cast (T c)
-template<typename T >
gtx::number_precision::f32vec1 f32_channel_cast (T a)
-template<typename T >
gtc::type_precision::f32vec4 f32_rgba_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_rgbx_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_xbgr_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_xrgb_cast (T c)
-template<typename T >
gtc::type_precision::f64vec4 f64_abgr_cast (T c)
-template<typename T >
gtc::type_precision::f64vec4 f64_argb_cast (T c)
-template<typename T >
gtc::type_precision::f64vec4 f64_bgra_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_bgrx_cast (T c)
-template<typename T >
gtx::number_precision::f64vec1 f64_channel_cast (T a)
-template<typename T >
gtc::type_precision::f64vec4 f64_rgba_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_rgbx_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_xbgr_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_xrgb_cast (T c)
template<typename valType >
gtc::type_precision::uint16 u16channel_cast (valType a)
-template<typename T >
gtc::type_precision::uint32 u32_abgr_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_argb_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_bgra_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_bgrx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_rgba_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_rgbx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_xbgr_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_xrgb_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_abgr_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_argb_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_bgra_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_bgrx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_rgba_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_rgbx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_xbgr_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_xrgb_cast (const detail::tvec3< T > &c)
template<typename valType >
gtc::type_precision::uint8 u8channel_cast (valType a)
-

Detailed Description

-

< GLM_GTX_color_cast extension: Conversion between two color types

-
- - - diff --git a/doc/api-0.9.2/a00173.html b/doc/api-0.9.2/a00173.html deleted file mode 100644 index cbc3f53e..00000000 --- a/doc/api-0.9.2/a00173.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -glm::gtx::color_space Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::color_space Namespace Reference
-
-
- -

< GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations -More...

- - - - - - - - - - - - - - -

-Functions

template<typename valType >
detail::tvec3< valType > hsvColor (detail::tvec3< valType > const &rgbValue)
template<typename valType >
valType luminosity (detail::tvec3< valType > const &color)
template<typename valType >
detail::tvec3< valType > rgbColor (detail::tvec3< valType > const &hsvValue)
template<typename valType >
detail::tvec3< valType > saturation (valType const s, detail::tvec3< valType > const &color)
template<typename valType >
detail::tmat4x4< valType > saturation (valType const s)
template<typename valType >
detail::tvec4< valType > saturation (valType const s, detail::tvec4< valType > const &color)
-

Detailed Description

-

< GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations

-
- - - diff --git a/doc/api-0.9.2/a00174.html b/doc/api-0.9.2/a00174.html deleted file mode 100644 index 4fde098e..00000000 --- a/doc/api-0.9.2/a00174.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -glm::gtx::color_space_YCoCg Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::color_space_YCoCg Namespace Reference
-
-
- -

< GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations -More...

- - - - - - - - - - -

-Functions

template<typename valType >
detail::tvec3< valType > rgb2YCoCg (detail::tvec3< valType > const &rgbColor)
template<typename valType >
detail::tvec3< valType > rgb2YCoCgR (detail::tvec3< valType > const &rgbColor)
template<typename valType >
detail::tvec3< valType > YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor)
template<typename valType >
detail::tvec3< valType > YCoCgR2rgb (detail::tvec3< valType > const &YCoCgColor)
-

Detailed Description

-

< GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations

-
- - - diff --git a/doc/api-0.9.2/a00175.html b/doc/api-0.9.2/a00175.html deleted file mode 100644 index 79cb94c8..00000000 --- a/doc/api-0.9.2/a00175.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - -glm::gtx::compatibility Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::compatibility Namespace Reference
-
-
- -

< GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef bool bool1
-typedef bool bool1x1
-typedef detail::tvec2< bool > bool2
-typedef detail::tmat2x2< bool > bool2x2
-typedef detail::tmat2x3< bool > bool2x3
-typedef detail::tmat2x4< bool > bool2x4
-typedef detail::tvec3< bool > bool3
-typedef detail::tmat3x2< bool > bool3x2
-typedef detail::tmat3x3< bool > bool3x3
-typedef detail::tmat3x4< bool > bool3x4
-typedef detail::tvec4< bool > bool4
-typedef detail::tmat4x2< bool > bool4x2
-typedef detail::tmat4x3< bool > bool4x3
-typedef detail::tmat4x4< bool > bool4x4
-typedef double double1
-typedef double double1x1
-typedef detail::tvec2< double > double2
-typedef detail::tmat2x2< double > double2x2
-typedef detail::tmat2x3< double > double2x3
-typedef detail::tmat2x4< double > double2x4
-typedef detail::tvec3< double > double3
-typedef detail::tmat3x2< double > double3x2
-typedef detail::tmat3x3< double > double3x3
-typedef detail::tmat3x4< double > double3x4
-typedef detail::tvec4< double > double4
-typedef detail::tmat4x2< double > double4x2
-typedef detail::tmat4x3< double > double4x3
-typedef detail::tmat4x4< double > double4x4
-typedef float float1
-typedef float float1x1
-typedef detail::tvec2< float > float2
-typedef detail::tmat2x2< float > float2x2
-typedef detail::tmat2x3< float > float2x3
-typedef detail::tmat2x4< float > float2x4
-typedef detail::tvec3< float > float3
-typedef detail::tmat3x2< float > float3x2
-typedef detail::tmat3x3< float > float3x3
-typedef detail::tmat3x4< float > float3x4
-typedef detail::tvec4< float > float4
-typedef detail::tmat4x2< float > float4x2
-typedef detail::tmat4x3< float > float4x3
-typedef detail::tmat4x4< float > float4x4
-typedef gtc::half_float::half half1
-typedef gtc::half_float::half half1x1
-typedef detail::tvec2
-< gtc::half_float::half
half2
-typedef detail::tmat2x2
-< gtc::half_float::half
half2x2
-typedef detail::tmat2x3
-< gtc::half_float::half
half2x3
-typedef detail::tmat2x4
-< gtc::half_float::half
half2x4
-typedef detail::tvec3
-< gtc::half_float::half
half3
-typedef detail::tmat3x2
-< gtc::half_float::half
half3x2
-typedef detail::tmat3x3
-< gtc::half_float::half
half3x3
-typedef detail::tmat3x4
-< gtc::half_float::half
half3x4
-typedef detail::tvec4
-< gtc::half_float::half
half4
-typedef detail::tmat4x2
-< gtc::half_float::half
half4x2
-typedef detail::tmat4x3
-< gtc::half_float::half
half4x3
-typedef detail::tmat4x4
-< gtc::half_float::half
half4x4
-typedef int int1
-typedef int int1x1
-typedef detail::tvec2< int > int2
-typedef detail::tmat2x2< int > int2x2
-typedef detail::tmat2x3< int > int2x3
-typedef detail::tmat2x4< int > int2x4
-typedef detail::tvec3< int > int3
-typedef detail::tmat3x2< int > int3x2
-typedef detail::tmat3x3< int > int3x3
-typedef detail::tmat3x4< int > int3x4
-typedef detail::tvec4< int > int4
-typedef detail::tmat4x2< int > int4x2
-typedef detail::tmat4x3< int > int4x3
-typedef detail::tmat4x4< int > int4x4

-Functions

-template<typename T >
GLM_FUNC_QUALIFIER T atan2 (T x, T y)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
atan2 (const detail::tvec2< T > &x, const detail::tvec2< T > &y)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
atan2 (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
atan2 (const detail::tvec4< T > &x, const detail::tvec4< T > &y)
-template<typename genType >
bool isfinite (genType const &x)
-template<typename valType >
detail::tvec2< bool > isfinite (const detail::tvec2< valType > &x)
-template<typename valType >
detail::tvec3< bool > isfinite (const detail::tvec3< valType > &x)
-template<typename valType >
detail::tvec4< bool > isfinite (const detail::tvec4< valType > &x)
-template<typename genType >
detail::tvec4< bool > isinf (const detail::tvec4< genType > &x)
-template<typename genType >
bool isinf (genType const &x)
-template<typename genType >
detail::tvec2< bool > isinf (const detail::tvec2< genType > &x)
-template<typename genType >
detail::tvec3< bool > isinf (const detail::tvec3< genType > &x)
-template<typename genType >
bool isnan (genType const &x)
-template<typename genType >
detail::tvec2< bool > isnan (const detail::tvec2< genType > &x)
-template<typename genType >
detail::tvec3< bool > isnan (const detail::tvec3< genType > &x)
-template<typename genType >
detail::tvec4< bool > isnan (const detail::tvec4< genType > &x)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, T a)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, const detail::tvec2< T > &a)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, T a)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, const detail::tvec3< T > &a)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, T a)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, const detail::tvec4< T > &a)
-template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
saturate (const detail::tvec2< T > &x)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
saturate (const detail::tvec3< T > &x)
-template<typename T >
GLM_FUNC_QUALIFIER T saturate (T x)
-template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
saturate (const detail::tvec4< T > &x)
-

Detailed Description

-

< GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages

-
- - - diff --git a/doc/api-0.9.2/a00176.html b/doc/api-0.9.2/a00176.html deleted file mode 100644 index 19e8b202..00000000 --- a/doc/api-0.9.2/a00176.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -glm::gtx::component_wise Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::component_wise Namespace Reference
-
-
- -

< GLM_GTX_component_wise extension: Operations between components of a type -More...

- - - - - - - - - - -

-Functions

template<typename genType >
genType::value_type compAdd (genType const &v)
template<typename genType >
genType::value_type compMax (genType const &v)
template<typename genType >
genType::value_type compMin (genType const &v)
template<typename genType >
genType::value_type compMul (genType const &v)
-

Detailed Description

-

< GLM_GTX_component_wise extension: Operations between components of a type

-
- - - diff --git a/doc/api-0.9.2/a00177.html b/doc/api-0.9.2/a00177.html deleted file mode 100644 index aabe5866..00000000 --- a/doc/api-0.9.2/a00177.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::epsilon Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::epsilon Namespace Reference
-
-
- -

< GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values. -More...

- - - - - - -

-Functions

template<typename genTypeT , typename genTypeU >
bool equalEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
template<typename genTypeT , typename genTypeU >
bool notEqualEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
-

Detailed Description

-

< GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values.

-
- - - diff --git a/doc/api-0.9.2/a00178.html b/doc/api-0.9.2/a00178.html deleted file mode 100644 index 142a789c..00000000 --- a/doc/api-0.9.2/a00178.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -glm::gtx::euler_angles Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::euler_angles Namespace Reference
-
-
- -

< GLM_GTX_euler_angles extension: Build matrices from Euler angles. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename valType >
detail::tmat4x4< valType > eulerAngleX (valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleXY (valType const &angleX, valType const &angleY)
template<typename valType >
detail::tmat4x4< valType > eulerAngleXZ (valType const &angleX, valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleY (valType const &angleY)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYX (valType const &angleY, valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYZ (valType const &angleY, valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZ (valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZX (valType const &angleZ, valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZY (valType const &angleZ, valType const &angleY)
template<typename T >
detail::tmat2x2< T > orientate2 (T const &angle)
template<typename T >
detail::tmat3x3< T > orientate3 (detail::tvec3< T > const &angles)
template<typename T >
detail::tmat3x3< T > orientate3 (T const &angle)
template<typename T >
detail::tmat4x4< T > orientate4 (detail::tvec3< T > const &angles)
template<typename valType >
detail::tmat4x4< valType > yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll)
-

Detailed Description

-

< GLM_GTX_euler_angles extension: Build matrices from Euler angles.

-
- - - diff --git a/doc/api-0.9.2/a00179.html b/doc/api-0.9.2/a00179.html deleted file mode 100644 index eb40aef8..00000000 --- a/doc/api-0.9.2/a00179.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - -glm::gtx::extend Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::extend Namespace Reference
-
-
- -

< GLM_GTX_extend extension: Extend a position from a source to a position at a defined length. -More...

- - - - -

-Functions

template<typename genType >
genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
-

Detailed Description

-

< GLM_GTX_extend extension: Extend a position from a source to a position at a defined length.

-
- - - diff --git a/doc/api-0.9.2/a00180.html b/doc/api-0.9.2/a00180.html deleted file mode 100644 index 9567fa2c..00000000 --- a/doc/api-0.9.2/a00180.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - -glm::gtx::extented_min_max Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
-
-
glm::gtx::extented_min_max Namespace Reference
-
-
- -

< GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters. -More...

- -
-

Detailed Description

-

< GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters.

-
- - - diff --git a/doc/api-0.9.2/a00181.html b/doc/api-0.9.2/a00181.html deleted file mode 100644 index b39bbc14..00000000 --- a/doc/api-0.9.2/a00181.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - -glm::gtx::fast_exponential Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::fast_exponential Namespace Reference
-
-
- -

< GLM_GTX_fast_exponential extension: Fast but less accurate implementations of exponential based functions. -More...

- - - - - - - - - - - - - - - - -

-Functions

template<typename T >
fastExp (const T &x)
template<typename T >
fastExp2 (const T &x)
template<typename T >
fastLn (const T &x)
template<typename T >
fastLog (const T &x)
template<typename T >
fastLog2 (const T &x)
template<typename valType >
valType fastPow (valType const &x, valType const &y)
template<typename T , typename U >
fastPow (const T &x, const U &y)
-

Detailed Description

-

< GLM_GTX_fast_exponential extension: Fast but less accurate implementations of exponential based functions.

-
- - - diff --git a/doc/api-0.9.2/a00182.html b/doc/api-0.9.2/a00182.html deleted file mode 100644 index a9b1c142..00000000 --- a/doc/api-0.9.2/a00182.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -glm::gtx::fast_square_root Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::fast_square_root Namespace Reference
-
-
- -

< GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions. -More...

- - - - - - - - - - - - -

-Functions

template<typename genType >
genType::value_type fastDistance (genType const &x, genType const &y)
template<typename genType >
genType fastInverseSqrt (genType const &x)
template<typename genType >
genType::value_type fastLength (genType const &x)
template<typename genType >
genType fastNormalize (genType const &x)
template<typename genType >
genType fastSqrt (genType const &x)
-

Detailed Description

-

< GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions.

-
- - - diff --git a/doc/api-0.9.2/a00184.html b/doc/api-0.9.2/a00184.html deleted file mode 100644 index 9ee4c5ef..00000000 --- a/doc/api-0.9.2/a00184.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - -glm::gtx::gradient_paint Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
-
-
glm::gtx::gradient_paint Namespace Reference
-
-
- -

< GLM_GTX_gradient_paint extension: Compute a radient gradient according section OpenVG 1.1 specifications, 9.3.2 Radial Gradients -More...

- -
-

Detailed Description

-

< GLM_GTX_gradient_paint extension: Compute a radient gradient according section OpenVG 1.1 specifications, 9.3.2 Radial Gradients

-
- - - diff --git a/doc/api-0.9.2/a00185.html b/doc/api-0.9.2/a00185.html deleted file mode 100644 index 1545b51e..00000000 --- a/doc/api-0.9.2/a00185.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::handed_coordinate_space Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::handed_coordinate_space Namespace Reference
-
-
- -

< GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system. -More...

- - - - - - -

-Functions

template<typename T >
bool leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
template<typename T >
bool rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
-

Detailed Description

-

< GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system.

-
- - - diff --git a/doc/api-0.9.2/a00186.html b/doc/api-0.9.2/a00186.html deleted file mode 100644 index f70a237e..00000000 --- a/doc/api-0.9.2/a00186.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -glm::gtx::inertia Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::inertia Namespace Reference
-
-
- -

< GLM_GTX_inertia extension: Create inertia matrices -More...

- - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat3x3< T > ballInertia3 (const T Mass, const T Radius)
template<typename T >
detail::tmat4x4< T > ballInertia4 (const T Mass, const T Radius)
template<typename T >
detail::tmat3x3< T > boxInertia3 (const T Mass, const detail::tvec3< T > &Scale)
template<typename T >
detail::tmat4x4< T > boxInertia4 (const T Mass, const detail::tvec3< T > &Scale)
template<typename T >
detail::tmat3x3< T > diskInertia3 (const T Mass, const T Radius)
template<typename T >
detail::tmat4x4< T > diskInertia4 (const T Mass, const T Radius)
template<typename T >
detail::tmat3x3< T > sphereInertia3 (const T Mass, const T Radius)
template<typename T >
detail::tmat4x4< T > sphereInertia4 (const T Mass, const T Radius)
-

Detailed Description

-

< GLM_GTX_inertia extension: Create inertia matrices

-
- - - diff --git a/doc/api-0.9.2/a00187.html b/doc/api-0.9.2/a00187.html deleted file mode 100644 index 7ef83c4f..00000000 --- a/doc/api-0.9.2/a00187.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - -glm::gtx::int_10_10_10_2 Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::int_10_10_10_2 Namespace Reference
-
-
- -

< GLM_GTX_int_10_10_10_2 extension: Add support for integer for core functions -More...

- - - -

-Functions

dword uint10_10_10_2_cast (glm::vec4 const &v)
-

Detailed Description

-

< GLM_GTX_int_10_10_10_2 extension: Add support for integer for core functions

-
- - - diff --git a/doc/api-0.9.2/a00188.html b/doc/api-0.9.2/a00188.html deleted file mode 100644 index cfccd79a..00000000 --- a/doc/api-0.9.2/a00188.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - -glm::gtx::integer Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::integer Namespace Reference
-
-
- -

< GLM_GTX_integer extension: Add support for integer for core functions -More...

- - - - - - - -

-Functions

template<typename genType >
genType factorial (genType const &x)
int mod (int x, int y)
int pow (int x, int y)
int sqrt (int x)
-

Detailed Description

-

< GLM_GTX_integer extension: Add support for integer for core functions

-
- - - diff --git a/doc/api-0.9.2/a00190.html b/doc/api-0.9.2/a00190.html deleted file mode 100644 index 19f6ff29..00000000 --- a/doc/api-0.9.2/a00190.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - -glm::gtx::log_base Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::log_base Namespace Reference
-
-
- -

< GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar. -More...

- - - - -

-Functions

template<typename genType >
genType log (genType const &x, genType const &base)
-

Detailed Description

-

< GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar.

-
- - - diff --git a/doc/api-0.9.2/a00191.html b/doc/api-0.9.2/a00191.html deleted file mode 100644 index 3085d4d0..00000000 --- a/doc/api-0.9.2/a00191.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::matrix_cross_product Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::matrix_cross_product Namespace Reference
-
-
- -

< GLM_GTX_matrix_cross_product: Build cross product matrices -More...

- - - - - - -

-Functions

template<typename T >
detail::tmat3x3< T > matrixCross3 (detail::tvec3< T > const &x)
template<typename T >
detail::tmat4x4< T > matrixCross4 (detail::tvec3< T > const &x)
-

Detailed Description

-

< GLM_GTX_matrix_cross_product: Build cross product matrices

-
- - - diff --git a/doc/api-0.9.2/a00192.html b/doc/api-0.9.2/a00192.html deleted file mode 100644 index c301c624..00000000 --- a/doc/api-0.9.2/a00192.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -glm::gtx::matrix_interpolation Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::matrix_interpolation Namespace Reference
-
-
- -

< GLM_GTX_matrix_interpolation extension: Add transformation matrices -More...

- - - - - - - - -

-Functions

template<typename T >
void axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle)
template<typename T >
detail::tmat4x4< T > axisAngleMatrix (detail::tvec3< T > const &axis, T const angle)
template<typename T >
detail::tmat4x4< T > interpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta)
-

Detailed Description

-

< GLM_GTX_matrix_interpolation extension: Add transformation matrices

-
- - - diff --git a/doc/api-0.9.2/a00193.html b/doc/api-0.9.2/a00193.html deleted file mode 100644 index 91bf9d21..00000000 --- a/doc/api-0.9.2/a00193.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -glm::gtx::matrix_major_storage Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::matrix_major_storage Namespace Reference
-
-
- -

< GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat2x2< T > colMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2)
template<typename T >
detail::tmat2x2< T > colMajor2 (const detail::tmat2x2< T > &m)
template<typename T >
detail::tmat3x3< T > colMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3)
template<typename T >
detail::tmat3x3< T > colMajor3 (const detail::tmat3x3< T > &m)
template<typename T >
detail::tmat4x4< T > colMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4)
template<typename T >
detail::tmat4x4< T > colMajor4 (const detail::tmat4x4< T > &m)
template<typename T >
detail::tmat2x2< T > rowMajor2 (const detail::tmat2x2< T > &m)
template<typename T >
detail::tmat2x2< T > rowMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2)
template<typename T >
detail::tmat3x3< T > rowMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3)
template<typename T >
detail::tmat3x3< T > rowMajor3 (const detail::tmat3x3< T > &m)
template<typename T >
detail::tmat4x4< T > rowMajor4 (const detail::tmat4x4< T > &m)
template<typename T >
detail::tmat4x4< T > rowMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4)
-

Detailed Description

-

< GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column

-
- - - diff --git a/doc/api-0.9.2/a00194.html b/doc/api-0.9.2/a00194.html deleted file mode 100644 index 2afa8898..00000000 --- a/doc/api-0.9.2/a00194.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -glm::gtx::matrix_operation Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::matrix_operation Namespace Reference
-
-
- -

< GLM_GTX_matrix_operation: Build diagonal matrices -More...

- - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename valType >
detail::tmat2x2< valType > diagonal2x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat2x3< valType > diagonal2x3 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat2x4< valType > diagonal2x4 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat3x2< valType > diagonal3x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat3x3< valType > diagonal3x3 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat3x4< valType > diagonal3x4 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat4x2< valType > diagonal4x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat4x3< valType > diagonal4x3 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat4x4< valType > diagonal4x4 (detail::tvec4< valType > const &v)
-

Detailed Description

-

< GLM_GTX_matrix_operation: Build diagonal matrices

-
- - - diff --git a/doc/api-0.9.2/a00195.html b/doc/api-0.9.2/a00195.html deleted file mode 100644 index e2509cca..00000000 --- a/doc/api-0.9.2/a00195.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -glm::gtx::matrix_query Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::matrix_query Namespace Reference
-
-
- -

< GLM_GTX_matrix_query: Query to evaluate matrix properties -More...

- - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
bool isIdentity (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename T >
bool isNormalized (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNormalized (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNormalized (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
template<typename genType >
bool isOrthogonal (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
-

Detailed Description

-

< GLM_GTX_matrix_query: Query to evaluate matrix properties

-
- - - diff --git a/doc/api-0.9.2/a00196.html b/doc/api-0.9.2/a00196.html deleted file mode 100644 index 1a85ea01..00000000 --- a/doc/api-0.9.2/a00196.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - -glm::gtx::mixed_product Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::mixed_product Namespace Reference
-
-
- -

< GLM_GTX_mixed_product extension: Mixed product of 3 vectors. -More...

- - - - -

-Functions

-template<typename valType >
valType mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3)
-

Detailed Description

-

< GLM_GTX_mixed_product extension: Mixed product of 3 vectors.

-
- - - diff --git a/doc/api-0.9.2/a00197.html b/doc/api-0.9.2/a00197.html deleted file mode 100644 index 59168837..00000000 --- a/doc/api-0.9.2/a00197.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::multiple Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::multiple Namespace Reference
-
-
- -

< GLM_GTX_multiple: Find the closest number of a number multiple of other number. -More...

- - - - - - -

-Functions

template<typename genType >
genType higherMultiple (genType const &Source, genType const &Multiple)
template<typename genType >
genType lowerMultiple (genType const &Source, genType const &Multiple)
-

Detailed Description

-

< GLM_GTX_multiple: Find the closest number of a number multiple of other number.

-
- - - diff --git a/doc/api-0.9.2/a00198.html b/doc/api-0.9.2/a00198.html deleted file mode 100644 index 02ccfe53..00000000 --- a/doc/api-0.9.2/a00198.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -glm::gtx::noise Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::noise Namespace Reference
-
-
- -

< GLM_GTX_noise extension: Comparison functions for a user defined epsilon values. -More...

- - - - - - - - -

-Functions

template<typename T , template< typename > class vecType>
perlin (vecType< T > const &p)
template<typename T , template< typename > class vecType>
perlin (vecType< T > const &p, vecType< T > const &rep)
template<typename T , template< typename > class vecType>
simplex (vecType< T > const &p)
-

Detailed Description

-

< GLM_GTX_noise extension: Comparison functions for a user defined epsilon values.

-
- - - diff --git a/doc/api-0.9.2/a00199.html b/doc/api-0.9.2/a00199.html deleted file mode 100644 index ca86f1b1..00000000 --- a/doc/api-0.9.2/a00199.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -glm::gtx::norm Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::norm Namespace Reference
-
-
- -

< GLM_GTX_norm extension: Various way to compute vector norms. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
distance2 (const T p0, const T p1)
template<typename T >
distance2 (const detail::tvec3< T > &p0, const detail::tvec3< T > &p1)
template<typename T >
distance2 (const detail::tvec4< T > &p0, const detail::tvec4< T > &p1)
template<typename T >
distance2 (const detail::tvec2< T > &p0, const detail::tvec2< T > &p1)
template<typename T >
l1Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
template<typename T >
l1Norm (const detail::tvec3< T > &v)
template<typename T >
l2Norm (const detail::tvec3< T > &x)
template<typename T >
l2Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
template<typename T >
length2 (const detail::tvec4< T > &x)
template<typename T >
length2 (const T x)
template<typename T >
length2 (const detail::tvec2< T > &x)
template<typename T >
length2 (const detail::tvec3< T > &x)
template<typename T >
length2 (const detail::tquat< T > &q)
template<typename T >
lxNorm (const detail::tvec3< T > &x, unsigned int Depth)
template<typename T >
lxNorm (const detail::tvec3< T > &x, const detail::tvec3< T > &y, unsigned int Depth)
-

Detailed Description

-

< GLM_GTX_norm extension: Various way to compute vector norms.

-
- - - diff --git a/doc/api-0.9.2/a00200.html b/doc/api-0.9.2/a00200.html deleted file mode 100644 index b27448d2..00000000 --- a/doc/api-0.9.2/a00200.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - -glm::gtx::normal Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::normal Namespace Reference
-
-
- -

< GLM_GTX_normal extension: Compute the normal of a triangle. -More...

- - - - -

-Functions

template<typename T >
detail::tvec3< T > triangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3)
-

Detailed Description

-

< GLM_GTX_normal extension: Compute the normal of a triangle.

-
- - - diff --git a/doc/api-0.9.2/a00201.html b/doc/api-0.9.2/a00201.html deleted file mode 100644 index e9321f69..00000000 --- a/doc/api-0.9.2/a00201.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::normalize_dot Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::normalize_dot Namespace Reference
-
-
- -

< GLM_GTX_normalize_dot extension: Dot product of vectors that need to be normalize with a single square root. -More...

- - - - - - -

-Functions

template<typename genType >
genType::value_type fastNormalizeDot (genType const &x, genType const &y)
template<typename genType >
genType::value_type normalizeDot (genType const &x, genType const &y)
-

Detailed Description

-

< GLM_GTX_normalize_dot extension: Dot product of vectors that need to be normalize with a single square root.

-
- - - diff --git a/doc/api-0.9.2/a00202.html b/doc/api-0.9.2/a00202.html deleted file mode 100644 index d42d9d89..00000000 --- a/doc/api-0.9.2/a00202.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -glm::gtx::number_precision Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::number_precision Namespace Reference
-
-
- -

< GLM_GTX_number_precision extension: Defined size types. -More...

- - - - - - - - - - - - - - - -

-Typedefs

-typedef f16 f16mat1
-typedef f16 f16mat1x1
-typedef f16 f16vec1
-typedef f32 f32mat1
-typedef f32 f32mat1x1
-typedef f32 f32vec1
-typedef f64 f64mat1
-typedef f64 f64mat1x1
-typedef f64 f64vec1
-typedef u16 u16vec1
-typedef u32 u32vec1
-typedef u64 u64vec1
-typedef u8 u8vec1
-

Detailed Description

-

< GLM_GTX_number_precision extension: Defined size types.

-
- - - diff --git a/doc/api-0.9.2/a00204.html b/doc/api-0.9.2/a00204.html deleted file mode 100644 index a9c12e92..00000000 --- a/doc/api-0.9.2/a00204.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -glm::gtx::optimum_pow Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::optimum_pow Namespace Reference
-
-
- -

< GLM_GTX_optimum_pow extension: Integer exponentiation of power functions. -More...

- - - - - - - - - - - - -

-Functions

template<typename genType >
genType pow2 (const genType &x)
template<typename genType >
genType pow3 (const genType &x)
template<typename genType >
genType pow4 (const genType &x)
detail::tvec2< bool > powOfTwo (const detail::tvec2< int > &x)
bool powOfTwo (int num)
detail::tvec3< bool > powOfTwo (const detail::tvec3< int > &x)
detail::tvec4< bool > powOfTwo (const detail::tvec4< int > &x)
-

Detailed Description

-

< GLM_GTX_optimum_pow extension: Integer exponentiation of power functions.

-
- - - diff --git a/doc/api-0.9.2/a00205.html b/doc/api-0.9.2/a00205.html deleted file mode 100644 index bf6e7685..00000000 --- a/doc/api-0.9.2/a00205.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::orthonormalize Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::orthonormalize Namespace Reference
-
-
- -

< GLM_GTX_orthonormalize extension: Orthonormalize matrices. -More...

- - - - - - -

-Functions

template<typename T >
detail::tmat3x3< T > orthonormalize (const detail::tmat3x3< T > &m)
template<typename T >
detail::tvec3< T > orthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
-

Detailed Description

-

< GLM_GTX_orthonormalize extension: Orthonormalize matrices.

-
- - - diff --git a/doc/api-0.9.2/a00206.html b/doc/api-0.9.2/a00206.html deleted file mode 100644 index 096ce27b..00000000 --- a/doc/api-0.9.2/a00206.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -glm::gtx::perpendicular Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::perpendicular Namespace Reference
-
-
- -

< GLM_GTX_perpendicular extension: Perpendicular of a vector from other one -More...

- - - - - - - - -

-Functions

template<typename T >
detail::tvec2< T > perp (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal)
template<typename T >
detail::tvec4< T > perp (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal)
template<typename T >
detail::tvec3< T > perp (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal)
-

Detailed Description

-

< GLM_GTX_perpendicular extension: Perpendicular of a vector from other one

-
- - - diff --git a/doc/api-0.9.2/a00207.html b/doc/api-0.9.2/a00207.html deleted file mode 100644 index ddbe0174..00000000 --- a/doc/api-0.9.2/a00207.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::polar_coordinates Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::polar_coordinates Namespace Reference
-
-
- -

< GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert. -More...

- - - - - - -

-Functions

template<typename T >
detail::tvec3< T > euclidean (const detail::tvec3< T > &polar)
template<typename T >
detail::tvec3< T > polar (const detail::tvec3< T > &euclidean)
-

Detailed Description

-

< GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert.

-
- - - diff --git a/doc/api-0.9.2/a00208.html b/doc/api-0.9.2/a00208.html deleted file mode 100644 index ebd58ed7..00000000 --- a/doc/api-0.9.2/a00208.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -glm::gtx::projection Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::projection Namespace Reference
-
-
- -

< GLM_GTX_projection extension: Projection of a vector to other one -More...

- - - - - - - - -

-Functions

template<typename T >
detail::tvec2< T > proj (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal)
template<typename T >
detail::tvec4< T > proj (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal)
template<typename T >
detail::tvec3< T > proj (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal)
-

Detailed Description

-

< GLM_GTX_projection extension: Projection of a vector to other one

-
- - - diff --git a/doc/api-0.9.2/a00209.html b/doc/api-0.9.2/a00209.html deleted file mode 100644 index 0c8d097c..00000000 --- a/doc/api-0.9.2/a00209.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - -glm::gtx::quaternion Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::quaternion Namespace Reference
-
-
- -

< GLM_GTX_quaternion extension: Quaternion types and functions -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename valType >
valType angle (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, detail::tvec3< valType > const &axis)
template<typename valType >
detail::tvec3< valType > axis (detail::tquat< valType > const &x)
template<typename valType >
detail::tvec3< valType > cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
template<typename valType >
detail::tvec3< valType > cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q)
template<typename valType >
detail::tvec3< valType > eulerAngles (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > exp (detail::tquat< valType > const &q, valType const &exponent)
template<typename valType >
valType extractRealComponent (detail::tquat< valType > const &q)
template<typename T >
detail::tquat< T > fastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename valType >
detail::tquat< valType > intermediate (detail::tquat< valType > const &prev, detail::tquat< valType > const &curr, detail::tquat< valType > const &next)
template<typename valType >
detail::tquat< valType > log (detail::tquat< valType > const &q)
template<typename valType >
valType pitch (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > pow (detail::tquat< valType > const &x, valType const &y)
template<typename valType >
valType roll (detail::tquat< valType > const &x)
template<typename valType >
detail::tvec3< valType > rotate (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
template<typename valType >
detail::tvec4< valType > rotate (detail::tquat< valType > const &q, detail::tvec4< valType > const &v)
template<typename T >
detail::tquat< T > shortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename valType >
detail::tquat< valType > squad (detail::tquat< valType > const &q1, detail::tquat< valType > const &q2, detail::tquat< valType > const &s1, detail::tquat< valType > const &s2, valType const &h)
template<typename valType >
detail::tmat3x3< valType > toMat3 (detail::tquat< valType > const &x)
template<typename valType >
detail::tmat4x4< valType > toMat4 (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat4x4< valType > const &x)
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat3x3< valType > const &x)
template<typename valType >
valType yaw (detail::tquat< valType > const &x)
-

Detailed Description

-

< GLM_GTX_quaternion extension: Quaternion types and functions

-
- - - diff --git a/doc/api-0.9.2/a00210.html b/doc/api-0.9.2/a00210.html deleted file mode 100644 index 51371313..00000000 --- a/doc/api-0.9.2/a00210.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - -glm::gtx::random Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::random Namespace Reference
-
-
- -

< GLM_GTX_random extension: Generate random number from various distribution methods -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-template<typename T >
compRand1 ()
-template<>
float compRand1 ()
-template<typename T >
compRand1 (T Min, T Max)
-template<typename T >
detail::tvec2< T > compRand2 (const detail::tvec2< T > &Min, const detail::tvec2< T > &Max)
-template<typename T >
detail::tvec2< T > compRand2 (T Min, T Max)
-template<typename T >
detail::tvec3< T > compRand3 (const detail::tvec3< T > &Min, const detail::tvec3< T > &Max)
-template<typename T >
detail::tvec3< T > compRand3 (T Min, T Max)
-template<typename T >
detail::tvec3< T > compRand4 (const detail::tvec4< T > &Min, const detail::tvec4< T > &Max)
-template<typename T >
detail::tvec4< T > compRand4 (T Min, T Max)
-template<typename T >
gaussRand1 (T mean, T std_deviation)
-template<typename T >
detail::tvec2< T > gaussRand2 (T mean, const detail::tvec2< T > &std_deviation)
-template<typename T >
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, const detail::tvec2< T > &std_deviation)
-template<typename T >
detail::tvec2< T > gaussRand2 (T mean, T std_deviation)
-template<typename T >
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, T std_deviation)
-template<typename T >
detail::tvec3< T > gaussRand3 (T mean, const detail::tvec3< T > &std_deviation)
-template<typename T >
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, const detail::tvec3< T > &std_deviation)
-template<typename T >
detail::tvec3< T > gaussRand3 (T mean, T std_deviation)
-template<typename T >
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, T std_deviation)
-template<typename T >
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, T std_deviation)
-template<typename T >
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, const detail::tvec4< T > &std_deviation)
-template<typename T >
detail::tvec4< T > gaussRand4 (T mean, const detail::tvec4< T > &std_deviation)
-template<typename T >
detail::tvec4< T > gaussRand4 (T mean, T std_deviation)
-template<typename T >
detail::tvec2< T > normalizedRand2 ()
-template<typename T >
detail::tvec2< T > normalizedRand2 (T Min, T Max)
-template<typename T >
detail::tvec3< T > normalizedRand3 (T Min, T Max)
-template<typename T >
detail::tvec3< T > normalizedRand3 ()
template<typename T >
signedRand1 ()
-template<>
float signedRand1 ()
-template<typename T >
detail::tvec2< T > signedRand2 ()
-template<typename T >
detail::tvec3< T > signedRand3 ()
-template<typename T >
detail::tvec4< T > signedRand4 ()
-template<typename T >
detail::tvec2< T > vecRand2 ()
-template<typename T >
detail::tvec2< T > vecRand2 (T MinRadius, T MaxRadius)
-template<typename T >
detail::tvec3< T > vecRand3 (T MinRadius, T MaxRadius)
-template<typename T >
detail::tvec3< T > vecRand3 ()
-template<typename T >
detail::tvec4< T > vecRand4 ()
-template<typename T >
detail::tvec4< T > vecRand4 (T MinRadius, T MaxRadius)
-

Detailed Description

-

< GLM_GTX_random extension: Generate random number from various distribution methods

-
- - - diff --git a/doc/api-0.9.2/a00211.html b/doc/api-0.9.2/a00211.html deleted file mode 100644 index 48d47044..00000000 --- a/doc/api-0.9.2/a00211.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -glm::gtx::raw_data Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::raw_data Namespace Reference
-
-
- -

< GLM_GTX_raw_data extension: Projection of a vector to other one -More...

- - - - - - -

-Typedefs

typedef uint8 byte
typedef uint32 dword
typedef uint64 qword
typedef uint16 word
-

Detailed Description

-

< GLM_GTX_raw_data extension: Projection of a vector to other one

-
- - - diff --git a/doc/api-0.9.2/a00213.html b/doc/api-0.9.2/a00213.html deleted file mode 100644 index 6225d81f..00000000 --- a/doc/api-0.9.2/a00213.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -glm::gtx::rotate_vector Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::rotate_vector Namespace Reference
-
-
- -

< GLM_GTX_rotate_vector extension: Function to directly rotate a vector -More...

- - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat4x4< T > orientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up)
template<typename T >
detail::tvec2< T > rotate (detail::tvec2< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal)
template<typename T >
detail::tvec4< T > rotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal)
template<typename T >
detail::tvec3< T > rotateX (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateX (detail::tvec4< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotateY (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateY (detail::tvec4< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotateZ (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateZ (detail::tvec4< T > const &v, T const &angle)
-

Detailed Description

-

< GLM_GTX_rotate_vector extension: Function to directly rotate a vector

-
- - - diff --git a/doc/api-0.9.2/a00214.html b/doc/api-0.9.2/a00214.html deleted file mode 100644 index a641ced3..00000000 --- a/doc/api-0.9.2/a00214.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -glm::gtx::simd_mat4 Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::simd_mat4 Namespace Reference
-
-
- -

< GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type. -More...

- - - - - - - - -

-Functions

float determinant (detail::fmat4x4SIMD const &m)
detail::fmat4x4SIMD inverse (detail::fmat4x4SIMD const &m)
detail::tmat4x4< float > mat4_cast (detail::fmat4x4SIMD const &x)
detail::fmat4x4SIMD matrixCompMult (detail::fmat4x4SIMD const &x, detail::fmat4x4SIMD const &y)
detail::fmat4x4SIMD outerProduct (detail::fvec4SIMD const &c, detail::fvec4SIMD const &r)
detail::fmat4x4SIMD transpose (detail::fmat4x4SIMD const &x)
-

Detailed Description

-

< GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type.

-
- - - diff --git a/doc/api-0.9.2/a00215.html b/doc/api-0.9.2/a00215.html deleted file mode 100644 index 0f307e59..00000000 --- a/doc/api-0.9.2/a00215.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -glm::gtx::simd_vec4 Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::simd_vec4 Namespace Reference
-
-
- -

< GLM_GTX_simd_vec4 extension: SIMD implementation of vec4 type. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

detail::fvec4SIMD abs (detail::fvec4SIMD const &x)
detail::fvec4SIMD ceil (detail::fvec4SIMD const &x)
detail::fvec4SIMD clamp (detail::fvec4SIMD const &x, detail::fvec4SIMD const &minVal, detail::fvec4SIMD const &maxVal)
detail::fvec4SIMD cross (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
float distance (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1)
detail::fvec4SIMD distance4 (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1)
detail::fvec4SIMD dot4 (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD fastInversesqrt (detail::fvec4SIMD const &x)
float fastLength (detail::fvec4SIMD const &x)
detail::fvec4SIMD fastLength4 (detail::fvec4SIMD const &x)
detail::fvec4SIMD fastNormalize (detail::fvec4SIMD const &x)
detail::fvec4SIMD fastSqrt (detail::fvec4SIMD const &x)
detail::fvec4SIMD floor (detail::fvec4SIMD const &x)
detail::fvec4SIMD fma (detail::fvec4SIMD const &a, detail::fvec4SIMD const &b, detail::fvec4SIMD const &c)
detail::fvec4SIMD fract (detail::fvec4SIMD const &x)
detail::fvec4SIMD inversesqrt (detail::fvec4SIMD const &x)
float length (detail::fvec4SIMD const &x)
detail::fvec4SIMD length4 (detail::fvec4SIMD const &x)
detail::fvec4SIMD max (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD min (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD mix (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y, detail::fvec4SIMD const &a)
detail::fvec4SIMD mod (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD mod (detail::fvec4SIMD const &x, float const &y)
float niceLength (detail::fvec4SIMD const &x)
detail::fvec4SIMD niceLength4 (detail::fvec4SIMD const &x)
detail::fvec4SIMD niceSqrt (detail::fvec4SIMD const &x)
detail::fvec4SIMD normalize (detail::fvec4SIMD const &x)
detail::fvec4SIMD reflect (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N)
detail::fvec4SIMD refract (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N, float const &eta)
detail::fvec4SIMD round (detail::fvec4SIMD const &x)
detail::fvec4SIMD sign (detail::fvec4SIMD const &x)
float simdDot (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD simdFaceforward (detail::fvec4SIMD const &N, detail::fvec4SIMD const &I, detail::fvec4SIMD const &Nref)
detail::fvec4SIMD smoothstep (detail::fvec4SIMD const &edge0, detail::fvec4SIMD const &edge1, detail::fvec4SIMD const &x)
detail::fvec4SIMD sqrt (detail::fvec4SIMD const &x)
detail::fvec4SIMD step (detail::fvec4SIMD const &edge, detail::fvec4SIMD const &x)
detail::fvec4SIMD trunc (detail::fvec4SIMD const &x)
detail::tvec4< float > vec4_cast (detail::fvec4SIMD const &x)
-

Detailed Description

-

< GLM_GTX_simd_vec4 extension: SIMD implementation of vec4 type.

-
- - - diff --git a/doc/api-0.9.2/a00216.html b/doc/api-0.9.2/a00216.html deleted file mode 100644 index 5b54c9b6..00000000 --- a/doc/api-0.9.2/a00216.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - -glm::gtx::spline Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::spline Namespace Reference
-
-
- -

< GLM_GTX_simplex extension: Spline functions -More...

- - - - - - - - -

-Functions

template<typename genType >
genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
template<typename genType >
genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
template<typename genType >
genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
-

Detailed Description

-

< GLM_GTX_simplex extension: Spline functions

-

< GLM_GTX_spline extension: Spline functions

-
- - - diff --git a/doc/api-0.9.2/a00217.html b/doc/api-0.9.2/a00217.html deleted file mode 100644 index f6b6cc2c..00000000 --- a/doc/api-0.9.2/a00217.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - -glm::gtx::std_based_type Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
-
-
glm::gtx::std_based_type Namespace Reference
-
-
- -

< GLM_GTX_std_based_type extension: Add support vector types based on C++ standard type -More...

- -
-

Detailed Description

-

< GLM_GTX_std_based_type extension: Add support vector types based on C++ standard type

-
- - - diff --git a/doc/api-0.9.2/a00218.html b/doc/api-0.9.2/a00218.html deleted file mode 100644 index 700ee785..00000000 --- a/doc/api-0.9.2/a00218.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - -glm::gtx::string_cast Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::string_cast Namespace Reference
-
-
- -

< GLM_GTX_string_cast extension: Setup strings for GLM type values -More...

- - - - -

-Functions

template<typename genType >
std::string to_string (genType const &x)
-

Detailed Description

-

< GLM_GTX_string_cast extension: Setup strings for GLM type values

-
- - - diff --git a/doc/api-0.9.2/a00219.html b/doc/api-0.9.2/a00219.html deleted file mode 100644 index 010cbe1a..00000000 --- a/doc/api-0.9.2/a00219.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -glm::gtx::transform Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::transform Namespace Reference
-
-
- -

< GLM_GTX_transform extension: Add transformation matrices -More...

- - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat4x4< T > rotate (T angle, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > rotate (T angle, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > scale (detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > scale (T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (detail::tvec3< T > const &v)
-

Detailed Description

-

< GLM_GTX_transform extension: Add transformation matrices

-
- - - diff --git a/doc/api-0.9.2/a00220.html b/doc/api-0.9.2/a00220.html deleted file mode 100644 index 30e72865..00000000 --- a/doc/api-0.9.2/a00220.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -glm::gtx::transform2 Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::transform2 Namespace Reference
-
-
- -

< GLM_GTX_transform2 extension: Add extra transformation matrices -More...

- - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat3x3< T > proj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal)
template<typename T >
detail::tmat4x4< T > proj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal)
template<typename valType >
detail::tmat4x4< valType > scaleBias (valType scale, valType bias)
template<typename valType >
detail::tmat4x4< valType > scaleBias (detail::tmat4x4< valType > const &m, valType scale, valType bias)
template<typename T >
detail::tmat3x3< T > shearX2D (detail::tmat3x3< T > const &m, T y)
template<typename T >
detail::tmat4x4< T > shearX3D (const detail::tmat4x4< T > &m, T y, T z)
template<typename T >
detail::tmat3x3< T > shearY2D (detail::tmat3x3< T > const &m, T x)
template<typename T >
detail::tmat4x4< T > shearY3D (const detail::tmat4x4< T > &m, T x, T z)
template<typename T >
detail::tmat4x4< T > shearZ3D (const detail::tmat4x4< T > &m, T x, T y)
-

Detailed Description

-

< GLM_GTX_transform2 extension: Add extra transformation matrices

-
- - - diff --git a/doc/api-0.9.2/a00221.html b/doc/api-0.9.2/a00221.html deleted file mode 100644 index 0e993c82..00000000 --- a/doc/api-0.9.2/a00221.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -glm::gtx::ulp Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::ulp Namespace Reference
-
-
- -

< GLM_GTX_ulp extension: Precision calculation functions -More...

- - - - - - - - - - - - - - -

-Functions

template<typename T >
uint float_distance (T const &x, T const &y)
template<typename T , template< typename > class vecType>
vecType< uintfloat_distance (vecType< T > const &x, vecType< T > const &y)
template<typename genType >
genType next_float (genType const &x)
template<typename genType >
genType next_float (genType const &x, uint const &Distance)
template<typename genType >
genType prev_float (genType const &x, uint const &Distance)
template<typename genType >
genType prev_float (genType const &x)
-

Detailed Description

-

< GLM_GTX_ulp extension: Precision calculation functions

-
- - - diff --git a/doc/api-0.9.2/a00222.html b/doc/api-0.9.2/a00222.html deleted file mode 100644 index 0e4c5a4a..00000000 --- a/doc/api-0.9.2/a00222.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - -glm::gtx::unsigned_int Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::unsigned_int Namespace Reference
-
-
- -

< GLM_GTX_unsigned_int extension: Add support for unsigned integer for core functions -More...

- - - - - - - -

-Typedefs

typedef signed int sint

-Functions

uint mod (uint x, uint y)
uint pow (uint x, uint y)
uint sqrt (uint x)
-

Detailed Description

-

< GLM_GTX_unsigned_int extension: Add support for unsigned integer for core functions

-
- - - diff --git a/doc/api-0.9.2/a00224.html b/doc/api-0.9.2/a00224.html deleted file mode 100644 index ca2c1207..00000000 --- a/doc/api-0.9.2/a00224.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - -glm::gtx::vector1::precision Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::vector1::precision Namespace Reference
-
-
- -

< GLM_GTX_vec1 extension: 1 component vector. -More...

- - - - - - - - - - - -

-Typedefs

typedef detail::highp_ivec1_t highp_ivec1
typedef detail::highp_uvec1_t highp_uvec1
typedef detail::highp_vec1_t highp_vec1
typedef detail::lowp_ivec1_t lowp_ivec1
typedef detail::lowp_uvec1_t lowp_uvec1
typedef detail::lowp_vec1_t lowp_vec1
typedef detail::mediump_ivec1_t mediump_ivec1
typedef detail::mediump_uvec1_t mediump_uvec1
typedef detail::mediump_vec1_t mediump_vec1
-

Detailed Description

-

< GLM_GTX_vec1 extension: 1 component vector.

-

Typedef Documentation

- -
-
- - - - -
typedef detail::highp_ivec1_t highp_ivec1
-
-
- -

1 component vector of high precision signed integer numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 45 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::highp_uvec1_t highp_uvec1
-
-
- -

1 component vector of high precision unsigned integer numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 58 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::highp_vec1_t highp_vec1
-
-
- -

1 component vector of high precision floating-point numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 32 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::lowp_ivec1_t lowp_ivec1
-
-
- -

1 component vector of low precision signed integer numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 53 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::lowp_uvec1_t lowp_uvec1
-
-
- -

1 component vector of low precision unsigned integer numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 66 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::lowp_vec1_t lowp_vec1
-
-
- -

1 component vector of low precision floating-point numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 40 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::mediump_ivec1_t mediump_ivec1
-
-
- -

1 component vector of medium precision signed integer numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 49 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::mediump_uvec1_t mediump_uvec1
-
-
- -

1 component vector of medium precision unsigned integer numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 62 of file vec1.hpp.

- -
-
- -
-
- - - - -
typedef detail::mediump_vec1_t mediump_vec1
-
-
- -

1 component vector of medium precision floating-point numbers.

-

There is no guarantee on the actual precision. From GLM_GTX_vec1 extension.

- -

Definition at line 36 of file vec1.hpp.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00225.html b/doc/api-0.9.2/a00225.html deleted file mode 100644 index 23d91ca1..00000000 --- a/doc/api-0.9.2/a00225.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -glm::gtx::vector_access Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::vector_access Namespace Reference
-
-
- -

< GLM_GTX_vector_access extension: Function to set values to vectors -More...

- - - - - - - - -

-Functions

template<typename valType >
void set (detail::tvec2< valType > &v, valType const &x, valType const &y)
template<typename valType >
void set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w)
template<typename valType >
void set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z)
-

Detailed Description

-

< GLM_GTX_vector_access extension: Function to set values to vectors

-
- - - diff --git a/doc/api-0.9.2/a00226.html b/doc/api-0.9.2/a00226.html deleted file mode 100644 index 8cd2ab07..00000000 --- a/doc/api-0.9.2/a00226.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - -glm::gtx::vector_angle Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::vector_angle Namespace Reference
-
-
- -

< GLM_GTX_vector_angle extension: Compute angle between vectors -More...

- - - - - - - - -

-Functions

template<typename vecType >
GLM_FUNC_QUALIFIER
-vecType::value_type 
angle (vecType const &x, vecType const &y)
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > const &ref)
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec2< T > const &x, detail::tvec2< T > const &y)
-

Detailed Description

-

< GLM_GTX_vector_angle extension: Compute angle between vectors

-
- - - diff --git a/doc/api-0.9.2/a00229.html b/doc/api-0.9.2/a00229.html deleted file mode 100644 index a5f48f1e..00000000 --- a/doc/api-0.9.2/a00229.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -glm::gtx::wrap Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
- -
-
glm::gtx::wrap Namespace Reference
-
-
- -

< GLM_GTX_wrap: Wrapping mode using my texture samping. -More...

- - - - - - - - -

-Functions

template<typename genType >
genType clamp (genType const &Texcoord)
template<typename genType >
genType mirrorRepeat (genType const &Texcoord)
template<typename genType >
genType repeat (genType const &Texcoord)
-

Detailed Description

-

< GLM_GTX_wrap: Wrapping mode using my texture samping.

-
- - - diff --git a/doc/api-0.9.2/a00232.html b/doc/api-0.9.2/a00232.html deleted file mode 100644 index 770e7b3a..00000000 --- a/doc/api-0.9.2/a00232.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - -glm::virtrev_glmext::xstream Namespace Reference - - - - - -
-
- - - - - - -
-
- - - -
-
-
-
glm::virtrev_glmext::xstream Namespace Reference
-
-
- -

GLM_VIRTREV_xstream extension: Streaming vector and matrix in a xml way. -More...

- -
-

Detailed Description

-

GLM_VIRTREV_xstream extension: Streaming vector and matrix in a xml way.

-
- - - diff --git a/doc/api-0.9.2/a00234.html b/doc/api-0.9.2/a00234.html deleted file mode 100644 index 27626f09..00000000 --- a/doc/api-0.9.2/a00234.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - -GLM Core - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM Core
-
-
- -

The core of GLM, which implements exactly and only the GLSL specification to the degree possible. -More...

- - - - - - -

-Modules

 Types
 Precision types
 Template types
 Functions
-

Detailed Description

-

The core of GLM, which implements exactly and only the GLSL specification to the degree possible.

-

The GLM core consists of C++ types that mirror GLSL types, C++ functions that mirror the GLSL functions. It also includes a set of precision-based types that can be used in the appropriate functions. The C++ types are all based on a basic set of template types.

-

The best documentation for GLM Core is the current GLSL specification, version 4.1 (pdf file). There are a few differences between GLM core and GLSL.

-
- - - diff --git a/doc/api-0.9.2/a00238.html b/doc/api-0.9.2/a00238.html deleted file mode 100644 index c843a469..00000000 --- a/doc/api-0.9.2/a00238.html +++ /dev/null @@ -1,2974 +0,0 @@ - - - - -Functions - - - - - -
-
- - - - - - -
-
- -
-
- -
-
Functions
-
-
- -

The functions defined by the specification. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename genFIType >
genFIType abs (genFIType const &x)
template<typename genType >
genType acos (genType const &x)
template<typename genType >
genType acosh (genType const &x)
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER bool all (vecType< bool > const &v)
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER bool any (vecType< bool > const &v)
template<typename genType >
genType asin (genType const &x)
template<typename genType >
genType asinh (genType const &x)
template<typename genType >
genType atan (genType const &y, genType const &x)
template<typename genType >
genType atan (genType const &y_over_x)
template<typename genType >
genType atanh (genType const &x)
template<typename T , template< typename > class C>
C< T >::signed_type bitCount (C< T > const &Value)
template<typename genIUType >
genIUType bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldReverse (genIUType const &value)
template<typename genType >
genType ceil (genType const &x)
template<typename genType >
genType clamp (genType const &x, genType const &minVal, genType const &maxVal)
template<typename genType >
genType cos (genType const &angle)
template<typename genType >
genType cosh (genType const &angle)
template<typename T >
detail::tvec3< T > cross (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
template<typename genType >
genType degrees (genType const &radians)
template<typename T >
detail::tmat2x2< T >::value_type determinant (detail::tmat2x2< T > const &m)
template<typename T >
detail::tmat3x3< T >::value_type determinant (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat4x4< T >::value_type determinant (detail::tmat4x4< T > const &m)
template<typename genType >
genType::value_type distance (genType const &p0, genType const &p1)
template<typename genType >
genType::value_type dot (genType const &x, genType const &y)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
equal (vecType< T > const &x, vecType< T > const &y)
template<typename genType >
genType exp (genType const &x)
template<typename genType >
genType exp2 (genType const &x)
template<typename genType >
genType faceforward (genType const &N, genType const &I, genType const &Nref)
template<typename T , template< typename > class C>
C< T >::signed_type findLSB (C< T > const &Value)
template<typename T , template< typename > class C>
C< T >::signed_type findMSB (C< T > const &Value)
template<typename genType , typename genIType >
genIType floatBitsToInt (genType const &value)
template<typename genType , typename genUType >
genUType floatBitsToUint (genType const &value)
template<typename genType >
genType floor (genType const &x)
template<typename genType >
genType fma (genType const &a, genType const &b, genType const &c)
template<typename genType >
genType fract (genType const &x)
template<typename genType , typename genIType >
genType frexp (genType const &x, genIType &exp)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
greaterThan (vecType< T > const &x, vecType< T > const &y)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
greaterThanEqual (vecType< T > const &x, vecType< T > const &y)
template<typename genIType >
void imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb)
template<typename genType , typename genIType >
genType intBitsToFloat (genIType const &value)
template<typename T >
detail::tmat3x3< T > inverse (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat4x4< T > inverse (detail::tmat4x4< T > const &m)
template<typename T >
detail::tmat2x2< T > inverse (detail::tmat2x2< T > const &m)
template<typename genType >
genType inversesqrt (genType const &x)
template<typename genType >
genType::bool_type isinf (genType const &x)
template<typename genType >
genType::bool_type isnan (genType const &x)
template<typename genType , typename genIType >
genType ldexp (genType const &x, genIType const &exp)
template<typename genType >
genType::value_type length (genType const &x)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
lessThan (vecType< T > const &x, vecType< T > const &y)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
lessThanEqual (vecType< T > const &x, vecType< T > const &y)
template<typename genType >
genType log (genType const &x)
template<typename genType >
genType log2 (genType const &x)
template<typename matType >
matType matrixCompMult (matType const &x, matType const &y)
template<typename genType >
genType max (genType const &x, genType const &y)
template<typename genType >
genType min (genType const &x, genType const &y)
template<typename genTypeT , typename genTypeU >
genTypeT mix (genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename genType >
genType mod (genType const &x, genType const &y)
template<typename genType >
genType mod (genType const &x, typename genType::value_type const &y)
template<typename genType >
genType modf (genType const &x, genType &i)
template<typename genType >
genType::value_type noise1 (genType const &x)
template<typename genType >
detail::tvec2< typename
-genType::value_type > 
noise2 (genType const &x)
template<typename genType >
detail::tvec3< typename
-genType::value_type > 
noise3 (genType const &x)
template<typename genType >
detail::tvec4< typename
-genType::value_type > 
noise4 (genType const &x)
template<typename genType >
genType normalize (genType const &x)
template<template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< bool > not_ (vecType< bool > const &v)
template<typename T , template< typename > class vecType>
GLM_FUNC_QUALIFIER vecType< T >
-::bool_type 
notEqual (vecType< T > const &x, vecType< T > const &y)
template<typename vecType , typename matType >
matType outerProduct (vecType const &c, vecType const &r)
double packDouble2x32 (detail::tvec2< detail::uint32 > const &v)
detail::uint32 packSnorm4x8 (detail::tvec4< detail::float32 > const &v)
detail::uint32 packUnorm2x16 (detail::tvec2< detail::float32 > const &v)
detail::uint32 packUnorm4x8 (detail::tvec4< detail::float32 > const &v)
template<typename genType >
genType pow (genType const &x, genType const &y)
template<typename genType >
genType radians (genType const &degrees)
template<typename genType >
genType reflect (genType const &I, genType const &N)
template<typename genType >
genType refract (genType const &I, genType const &N, typename genType::value_type const &eta)
template<typename genType >
genType round (genType const &x)
template<typename genType >
genType roundEven (genType const &x)
template<typename genFIType >
genFIType sign (genFIType const &x)
template<typename genType >
genType sin (genType const &angle)
template<typename genType >
genType sinh (genType const &angle)
template<typename genType >
genType smoothstep (genType const &edge0, genType const &edge1, genType const &x)
template<typename genType >
genType sqrt (genType const &x)
template<typename genType >
genType step (genType const &edge, genType const &x)
template<typename genType >
genType tan (genType const &angle)
template<typename genType >
genType tanh (genType const &angle)
template<typename matType >
matType::transpose_type transpose (matType const &x)
template<typename genType >
genType trunc (genType const &x)
template<typename genUType >
genUType uaddCarry (genUType const &x, genUType const &y, genUType &carry)
template<typename genType , typename genUType >
genType uintBitsToFloat (genUType const &value)
template<typename genUType >
void umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb)
detail::tvec2< detail::uint32 > unpackDouble2x32 (double const &v)
detail::tvec4< detail::float32 > unpackSnorm4x8 (detail::uint32 const &p)
detail::tvec2< detail::float32 > unpackUnorm2x16 (detail::uint32 const &p)
detail::tvec4< detail::float32 > unpackUnorm4x8 (detail::uint32 const &p)
template<typename genUType >
genUType usubBorrow (genUType const &x, genUType const &y, genUType &borrow)
-

Detailed Description

-

The functions defined by the specification.

-

< Define all geometric functions from Section 8.4 of GLSL 1.30.8 specification. Included in glm namespace.

-

< Define common functions from Section 8.3 of GLSL 1.30.8 specification. Included in glm namespace.

-

Function Documentation

- -
-
- - - - - - - - -
genFIType glm::core::function::common::abs (genFIType const & x)
-
-
- -

Returns x if x >= 0; otherwise, it returns -x.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::acos (genType const & x)
-
-
- -

Arc cosine.

-

Returns an angle whose sine is x. The range of values returned by this function is [0, PI]. Results are undefined if |x| > 1.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::acosh (genType const & x)
-
-
- -

Arc hyperbolic cosine; returns the non-negative inverse of cosh.

-

Results are undefined if x < 1.

- - -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER bool glm::core::function::vector_relational::all (vecType< bool > const & v)
-
-
- -

Returns true if all components of x are true.

- - -

Definition at line 176 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER bool glm::core::function::vector_relational::any (vecType< bool > const & v)
-
-
- -

Returns true if any component of x is true.

- - -

Definition at line 160 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::asin (genType const & x)
-
-
- -

Arc sine.

-

Returns an angle whose sine is x. The range of values returned by this function is [-PI/2, PI/2]. Results are undefined if |x| > 1.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::asinh (genType const & x)
-
-
- -

Arc hyperbolic sine; returns the inverse of sinh.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::trigonometric::atan (genType const & y,
genType const & x 
)
-
-
- -

Arc tangent.

-

Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0.

- - -

Referenced by glm::gtx::compatibility::atan2().

- -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::atan (genType const & y_over_x)
-
-
- -

Arc tangent.

-

Returns an angle whose tangent is y_over_x. The range of values returned by this function is [-PI/2, PI/2].

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::atanh (genType const & x)
-
-
- -

Arc hyperbolic tangent; returns the inverse of tanh.

-

Results are undefined if abs(x) >= 1.

- - -
-
- -
-
- - - - - - - - -
C<T>::signed_type glm::core::function::integer::bitCount (C< T > const & Value)
-
-
- -

Returns the number of bits set to 1 in the binary representation of value.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genIUType glm::core::function::integer::bitfieldExtract (genIUType const & Value,
int const & Offset,
int const & Bits 
)
-
-
- -

Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result.

-

For unsigned data types, the most significant bits of the result will be set to zero. For signed data types, the most significant bits will be set to the value of bit offset + base – 1.

-

If bits is zero, the result will be zero. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
genIUType glm::core::function::integer::bitfieldInsert (genIUType const & Base,
genIUType const & Insert,
int const & Offset,
int const & Bits 
)
-
-
- -

Returns the insertion the bits least-significant bits of insert into base.

-

The result will have bits [offset, offset + bits - 1] taken from bits [0, bits – 1] of insert, and all other bits taken directly from the corresponding bits of base. If bits is zero, the result will simply be base. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

- - -
-
- -
-
- - - - - - - - -
genIUType glm::core::function::integer::bitfieldReverse (genIUType const & value)
-
-
- -

Returns the reversal of the bits of value.

-

The bit numbered n of the result will be taken from bit (bits - 1) - n of value, where bits is the total number of bits used to represent value.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::ceil (genType const & x)
-
-
- -

Returns a value equal to the nearest integer that is greater than or equal to x.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::clamp (genType const & x,
genType const & minVal,
genType const & maxVal 
)
-
-
- -

Returns min(max(x, minVal), maxVal) for each component in x.

-

using the floating-point values minVal and maxVal.

- - -

Referenced by glm::gtx::compatibility::saturate().

- -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::cos (genType const & angle)
-
-
- -

The standard trigonometric cosine function.

-

The values returned by this function will range from [-1, 1].

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::cosh (genType const & angle)
-
-
- -

Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::tvec3<T> glm::core::function::geometric::cross (detail::tvec3< T > const & x,
detail::tvec3< T > const & y 
)
-
-
- -

Returns the cross product of x and y.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::degrees (genType const & radians)
-
-
- -

Converts radians to degrees and returns the result.

- - -
-
- -
-
- - - - - - - - -
detail::tmat2x2<T>::value_type glm::core::function::matrix::determinant (detail::tmat2x2< T > const & m)
-
-
- -

Return the determinant of a mat2 matrix.

- - -
-
- -
-
- - - - - - - - -
detail::tmat3x3<T>::value_type glm::core::function::matrix::determinant (detail::tmat3x3< T > const & m)
-
-
- -

Return the determinant of a mat3 matrix.

- - -
-
- -
-
- - - - - - - - -
detail::tmat4x4<T>::value_type glm::core::function::matrix::determinant (detail::tmat4x4< T > const & m)
-
-
- -

Return the determinant of a mat4 matrix.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType::value_type glm::core::function::geometric::distance (genType const & p0,
genType const & p1 
)
-
-
- -

Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType::value_type glm::core::function::geometric::dot (genType const & x,
genType const & y 
)
-
-
- -

Returns the dot product of x and y, i.e., result = x * y.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::equal (vecType< T > const & x,
vecType< T > const & y 
)
-
-
- -

Returns the component-wise comparison of result x == y.

- - -

Definition at line 121 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - -
genType glm::core::function::exponential::exp (genType const & x)
-
-
- -

Returns the natural exponentiation of x, i.e., e^x.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::exponential::exp2 (genType const & x)
-
-
- -

Returns 2 raised to the x power.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genType glm::core::function::geometric::faceforward (genType const & N,
genType const & I,
genType const & Nref 
)
-
-
- -

If dot(Nref, I) < 0.0, return N, otherwise, return -N.

- - -
-
- -
-
- - - - - - - - -
C<T>::signed_type glm::core::function::integer::findLSB (C< T > const & Value)
-
-
- -

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

-

If value is zero, -1 will be returned.

- - -
-
- -
-
- - - - - - - - -
C<T>::signed_type glm::core::function::integer::findMSB (C< T > const & Value)
-
-
- -

Returns the bit number of the most significant bit in the binary representation of value.

-

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

- - -
-
- -
-
- - - - - - - - -
genIType glm::core::function::common::floatBitsToInt (genType const & value)
-
-
- -

Returns a signed integer value representing the encoding of a floating-point value.

-

The floatingpoint value's bit-level representation is preserved.

- - -
-
- -
-
- - - - - - - - -
genUType glm::core::function::common::floatBitsToUint (genType const & value)
-
-
- -

Returns a unsigned integer value representing the encoding of a floating-point value.

-

The floatingpoint value's bit-level representation is preserved.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::floor (genType const & x)
-
-
- -

Returns a value equal to the nearest integer that is less then or equal to x.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::fma (genType const & a,
genType const & b,
genType const & c 
)
-
-
- -

Computes and returns a * b + c.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::fract (genType const & x)
-
-
- -

Return x - floor(x).

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::frexp (genType const & x,
genIType & exp 
)
-
-
- -

Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent)

-

The significand is returned by the function and the exponent is returned in the parameter exp. For a floating-point value of zero, the significant and exponent are both zero. For a floating-point value that is an infinity or is not a number, the results are undefined.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::greaterThan (vecType< T > const & x,
vecType< T > const & y 
)
-
-
- -

Returns the component-wise comparison of result x > y.

- - -

Definition at line 77 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::greaterThanEqual (vecType< T > const & x,
vecType< T > const & y 
)
-
-
- -

Returns the component-wise comparison of result x >= y.

- - -

Definition at line 99 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void glm::core::function::integer::imulExtended (genIType const & x,
genIType const & y,
genIType & msb,
genIType & lsb 
)
-
-
- -

Multiplies 32-bit integers x and y, producing a 64-bit result.

-

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::intBitsToFloat (genIType const & value)
-
-
- -

Returns a floating-point value corresponding to a signed integer encoding of a floating-point value.

-

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

- - -
-
- -
-
- - - - - - - - -
detail::tmat3x3<T> glm::core::function::matrix::inverse (detail::tmat3x3< T > const & m)
-
-
- -

Return the inverse of a mat3 matrix.

- - -
-
- -
-
- - - - - - - - -
detail::tmat4x4<T> glm::core::function::matrix::inverse (detail::tmat4x4< T > const & m)
-
-
- -

Return the inverse of a mat4 matrix.

- - -
-
- -
-
- - - - - - - - -
detail::tmat2x2<T> glm::core::function::matrix::inverse (detail::tmat2x2< T > const & m)
-
-
- -

Return the inverse of a mat2 matrix.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::exponential::inversesqrt (genType const & x)
-
-
- -

Returns the reciprocal of the positive square root of x.

- - -
-
- -
-
- - - - - - - - -
genType::bool_type glm::core::function::common::isinf (genType const & x)
-
-
- -

Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations.

-

Returns false otherwise, including for implementations with no infinity representations.

- - -
-
- -
-
- - - - - - - - -
genType::bool_type glm::core::function::common::isnan (genType const & x)
-
-
- -

Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.

-

Returns false otherwise, including for implementations with no NaN representations.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::ldexp (genType const & x,
genIType const & exp 
)
-
-
- -

Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent)

-

If this product is too large to be represented in the floating-point type, the result is undefined.

- - -
-
- -
-
- - - - - - - - -
genType::value_type glm::core::function::geometric::length (genType const & x)
-
-
- -

Returns the length of x, i.e., sqrt(x * x).

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::lessThan (vecType< T > const & x,
vecType< T > const & y 
)
-
-
- -

Returns the component-wise comparison result of x < y.

- - -

Definition at line 32 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::lessThanEqual (vecType< T > const & x,
vecType< T > const & y 
)
-
-
- -

Returns the component-wise comparison of result x <= y.

- - -

Definition at line 55 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - -
genType glm::core::function::exponential::log (genType const & x)
-
-
- -

Returns the natural logarithm of x, i.e., returns the value y which satisfies the equation x = e^y.

-

Results are undefined if x <= 0.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::exponential::log2 (genType const & x)
-
-
- -

Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
matType glm::core::function::matrix::matrixCompMult (matType const & x,
matType const & y 
)
-
-
- -

Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::max (genType const & x,
genType const & y 
)
-
-
- -

Returns y if x < y; otherwise, it returns x.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::min (genType const & x,
genType const & y 
)
-
-
- -

Returns y if y < x; otherwise, it returns x.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genTypeT glm::core::function::common::mix (genTypeT const & x,
genTypeT const & y,
genTypeU const & a 
)
-
-
-
Returns:
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1].
-
-If genTypeU is a boolean scalar or vector: Selects which vector each returned component comes from. For a component of a that is false, the corresponding component of x is returned. For a component of a that is true, the corresponding component of y is returned. Components of x and y that are not selected are allowed to be invalid floating point values and will have no effect on the results. Thus, this provides different functionality than genType mix(genType x, genType y, genType(a)) where a is a Boolean vector. -
-
Parameters:
- - - - -
[in]xFloating point scalar or vector.
[in]yFloating point scalar or vector.
[in]aFloating point or boolean scalar or vector.
-
-
- -

Referenced by glm::gtx::compatibility::lerp().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::mod (genType const & x,
genType const & y 
)
-
-
- -

Modulus.

-

Returns x - y * floor(x / y) for each component in x using the floating point value y.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::mod (genType const & x,
typename genType::value_type const & y 
)
-
-
- -

Modulus.

-

Returns x - y * floor(x / y) for each component in x using the floating point value y.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::modf (genType const & x,
genType & i 
)
-
-
- -

Returns the fractional part of x and sets i to the integer part (as a whole number floating point value).

-

Both the return value and the output parameter will have the same sign as x.

- - -
-
- -
-
- - - - - - - - -
genType::value_type glm::core::function::noise::noise1 (genType const & x)
-
-
- -

Returns a 1D noise value based on the input value x.

- - -
-
- -
-
- - - - - - - - -
detail::tvec2<typename genType::value_type> glm::core::function::noise::noise2 (genType const & x)
-
-
- -

Returns a 2D noise value based on the input value x.

- - -
-
- -
-
- - - - - - - - -
detail::tvec3<typename genType::value_type> glm::core::function::noise::noise3 (genType const & x)
-
-
- -

Returns a 3D noise value based on the input value x.

- - -
-
- -
-
- - - - - - - - -
detail::tvec4<typename genType::value_type> glm::core::function::noise::noise4 (genType const & x)
-
-
- -

Returns a 4D noise value based on the input value x.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::geometric::normalize (genType const & x)
-
-
- -

Returns a vector in the same direction as x but with length of 1.

- - -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER vecType<bool> glm::core::function::vector_relational::not_ (vecType< bool > const & v)
-
-
- -

Returns the component-wise logical complement of x.

-

/!\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead.

- - -

Definition at line 193 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::notEqual (vecType< T > const & x,
vecType< T > const & y 
)
-
-
- -

Returns the component-wise comparison of result x != y.

- - -

Definition at line 141 of file func_vector_relational.hpp.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
matType glm::core::function::matrix::outerProduct (vecType const & c,
vecType const & r 
)
-
-
- -

Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.

- - -
-
- -
-
- - - - - - - - -
double glm::core::function::packing::packDouble2x32 (detail::tvec2< detail::uint32 > const & v)
-
-
- -

Returns a double-precision value obtained by packing the components of v into a 64-bit value.

-

If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit- level representation of v is preserved. The first vector component specifies the 32 least significant bits; the second component specifies the 32 most significant bits.

- - -
-
- -
-
- - - - - - - - -
detail::uint32 glm::core::function::packing::packSnorm4x8 (detail::tvec4< detail::float32 > const & v)
-
-
- -

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

-

Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packSnorm4x8: round(clamp(c, -1, +1) * 127.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

- - -
-
- -
-
- - - - - - - - -
detail::uint32 glm::core::function::packing::packUnorm2x16 (detail::tvec2< detail::float32 > const & v)
-
-
- -

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

-

Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm2x16: round(clamp(c, 0, +1) * 65535.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

- - -
-
- -
-
- - - - - - - - -
detail::uint32 glm::core::function::packing::packUnorm4x8 (detail::tvec4< detail::float32 > const & v)
-
-
- -

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

-

Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm4x8: round(clamp(c, 0, +1) * 255.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::exponential::pow (genType const & x,
genType const & y 
)
-
-
- -

Returns x raised to the y power.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::radians (genType const & degrees)
-
-
- -

Converts degrees to radians and returns the result.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::geometric::reflect (genType const & I,
genType const & N 
)
-
-
- -

For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genType glm::core::function::geometric::refract (genType const & I,
genType const & N,
typename genType::value_type const & eta 
)
-
-
- -

For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::round (genType const & x)
-
-
- -

Returns a value equal to the nearest integer to x.

-

The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest. This includes the possibility that round(x) returns the same value as roundEven(x) for all values of x.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::roundEven (genType const & x)
-
-
- -

Returns a value equal to the nearest integer to x.

-

A fractional part of 0.5 will round toward the nearest even integer. (Both 3.5 and 4.5 for x will return 4.0.)

- - -
-
- -
-
- - - - - - - - -
genFIType glm::core::function::common::sign (genFIType const & x)
-
-
- -

Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::sin (genType const & angle)
-
-
- -

The standard trigonometric sine function.

-

The values returned by this function will range from [-1, 1].

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::sinh (genType const & angle)
-
-
- -

Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::smoothstep (genType const & edge0,
genType const & edge1,
genType const & x 
)
-
-
- -

Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1.

-

This is useful in cases where you would want a threshold function with a smooth transition. This is equivalent to: genType t; t = clamp ((x – edge0) / (edge1 – edge0), 0, 1); return t * t * (3 – 2 * t); Results are undefined if edge0 >= edge1.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::exponential::sqrt (genType const & x)
-
-
- -

Returns the positive square root of x.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - -
genType glm::core::function::common::step (genType const & edge,
genType const & x 
)
-
-
- -

Returns 0.0 if x < edge, otherwise it returns 1.0.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::tan (genType const & angle)
-
-
- -

The standard trigonometric tangent function.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::trigonometric::tanh (genType const & angle)
-
-
- -

Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)

- - -
-
- -
-
- - - - - - - - -
matType::transpose_type glm::core::function::matrix::transpose (matType const & x)
-
-
- -

Returns the transposed matrix of x.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::trunc (genType const & x)
-
-
- -

Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genUType glm::core::function::integer::uaddCarry (genUType const & x,
genUType const & y,
genUType & carry 
)
-
-
- -

Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).

-

The value carry is set to 0 if the sum was less than pow(2, 32), or to 1 otherwise.

- - -
-
- -
-
- - - - - - - - -
genType glm::core::function::common::uintBitsToFloat (genUType const & value)
-
-
- -

Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value.

-

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void glm::core::function::integer::umulExtended (genUType const & x,
genUType const & y,
genUType & msb,
genUType & lsb 
)
-
-
- -

Multiplies 32-bit integers x and y, producing a 64-bit result.

-

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

- - -
-
- -
-
- - - - - - - - -
detail::tvec2<detail::uint32> glm::core::function::packing::unpackDouble2x32 (double const & v)
-
-
- -

Returns a two-component unsigned integer vector representation of v.

-

The bit-level representation of v is preserved. The first component of the vector contains the 32 least significant bits of the double; the second component consists the 32 most significant bits.

- - -
-
- -
-
- - - - - - - - -
detail::tvec4<detail::float32> glm::core::function::packing::unpackSnorm4x8 (detail::uint32 const & p)
-
-
- -

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x8: clamp(f / 127.0, -1, +1)

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

- - -
-
- -
-
- - - - - - - - -
detail::tvec2<detail::float32> glm::core::function::packing::unpackUnorm2x16 (detail::uint32 const & p)
-
-
- -

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm2x16: f / 65535.0

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

- - -
-
- -
-
- - - - - - - - -
detail::tvec4<detail::float32> glm::core::function::packing::unpackUnorm4x8 (detail::uint32 const & p)
-
-
- -

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
genUType glm::core::function::integer::usubBorrow (genUType const & x,
genUType const & y,
genUType & borrow 
)
-
-
- -

Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise.

-

The value borrow is set to 0 if x >= y, or to 1 otherwise.

- - -
-
-
- - - diff --git a/doc/api-0.9.2/a00244.html b/doc/api-0.9.2/a00244.html deleted file mode 100644 index fc1f0f88..00000000 --- a/doc/api-0.9.2/a00244.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - -GLM_GTC_matrix_transform: Matrix transform functions. - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTC_matrix_transform: Matrix transform functions.
-
-
- -

Defines functions that generate common transformation matrices. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
detail::tmat4x4< T > frustum (T const &left, T const &right, T const &bottom, T const &top, T const &nearVal, T const &farVal)
template<typename T >
detail::tmat4x4< T > infinitePerspective (T fovy, T aspect, T zNear)
template<typename T >
detail::tmat4x4< T > lookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const &center, detail::tvec3< T > const &up)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top, T const &zNear, T const &zFar)
template<typename T >
detail::tmat4x4< T > perspective (T const &fovy, T const &aspect, T const &zNear, T const &zFar)
template<typename valType >
detail::tmat4x4< valType > perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &zNear, valType const &zFar)
template<typename T , typename U >
detail::tmat4x4< T > pickMatrix (detail::tvec2< T > const &center, detail::tvec2< T > const &delta, detail::tvec4< U > const &viewport)
template<typename T , typename U >
detail::tvec3< T > project (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
template<typename T >
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > tweakedInfinitePerspective (T fovy, T aspect, T zNear)
template<typename T , typename U >
detail::tvec3< T > unProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
-

Detailed Description

-

Defines functions that generate common transformation matrices.

-

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions ( perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

-

<glm/gtc/matrix_transform.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::frustum (T const & left,
T const & right,
T const & bottom,
T const & top,
T const & nearVal,
T const & farVal 
)
-
-
- -

Creates a frustum matrix.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::infinitePerspective (fovy,
aspect,
zNear 
)
-
-
- -

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite .

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::lookAt (detail::tvec3< T > const & eye,
detail::tvec3< T > const & center,
detail::tvec3< T > const & up 
)
-
-
- -

Build a look at view matrix.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::ortho (T const & left,
T const & right,
T const & bottom,
T const & top 
)
-
-
- -

Creates a matrix for projecting two-dimensional coordinates onto the screen.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::ortho (T const & left,
T const & right,
T const & bottom,
T const & top,
T const & zNear,
T const & zFar 
)
-
-
- -

Creates a matrix for an orthographic parallel viewing volume.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::perspective (T const & fovy,
T const & aspect,
T const & zNear,
T const & zFar 
)
-
-
- -

Creates a matrix for a symetric perspective-view frustum.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<valType> glm::gtc::matrix_transform::perspectiveFov (valType const & fov,
valType const & width,
valType const & height,
valType const & zNear,
valType const & zFar 
)
-
-
- -

Builds a perspective projection matrix based on a field of view From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::pickMatrix (detail::tvec2< T > const & center,
detail::tvec2< T > const & delta,
detail::tvec4< U > const & viewport 
)
-
-
- -

Define a picking region From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
detail::tvec3<T> glm::gtc::matrix_transform::project (detail::tvec3< T > const & obj,
detail::tmat4x4< T > const & model,
detail::tmat4x4< T > const & proj,
detail::tvec4< U > const & viewport 
)
-
-
- -

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::rotate (detail::tmat4x4< T > const & m,
T const & angle,
detail::tvec3< T > const & v 
)
-
-
- -

Builds a rotation 4 * 4 matrix created from an axis vector and an angle expressed in degrees.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::scale (detail::tmat4x4< T > const & m,
detail::tvec3< T > const & v 
)
-
-
- -

Builds a scale 4 * 4 matrix created from 3 scalars.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::translate (detail::tmat4x4< T > const & m,
detail::tvec3< T > const & v 
)
-
-
- -

Builds a translation 4 * 4 matrix created from a vector of 3 components.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::tmat4x4<T> glm::gtc::matrix_transform::tweakedInfinitePerspective (fovy,
aspect,
zNear 
)
-
-
- -

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

-

From GLM_GTC_matrix_transform extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
detail::tvec3<T> glm::gtc::matrix_transform::unProject (detail::tvec3< T > const & win,
detail::tmat4x4< T > const & model,
detail::tmat4x4< T > const & proj,
detail::tvec4< U > const & viewport 
)
-
-
- -

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.

-

From GLM_GTC_matrix_transform extension.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00247.html b/doc/api-0.9.2/a00247.html deleted file mode 100644 index 61a18379..00000000 --- a/doc/api-0.9.2/a00247.html +++ /dev/null @@ -1,1054 +0,0 @@ - - - - -GLM_GTC_type_ptr: Memory layout access. - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTC_type_ptr: Memory layout access.
-
-
- -

Used to get a pointer to the memory layout of a basic type. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x2< T > 
make_mat2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x2< T > 
make_mat2x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x3< T > 
make_mat2x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat2x4< T > 
make_mat2x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x3< T > 
make_mat3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x2< T > 
make_mat3x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x3< T > 
make_mat3x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat3x4< T > 
make_mat3x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x4< T > 
make_mat4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x2< T > 
make_mat4x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x3< T > 
make_mat4x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tmat4x4< T > 
make_mat4x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
make_vec2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
make_vec3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
make_vec4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec3< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec2< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec2< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec4< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec3< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec4< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x2< T > const &mat)
-

Detailed Description

-

Used to get a pointer to the memory layout of a basic type.

-

This extension defines an overloaded function, glm::value_ptr, which takes any of the core template types. It returns a pointer to the memory layout of the object. Matrix types store their values in column-major order.

-

This is useful for uploading data to matrices or copying data to buffer objects.

-

Example:

-
#include <glm/glm.hpp>
-#include <glm/gtc/type_ptr.hpp>
-
-glm::vec3 aVector(3);
-glm::mat4 someMatrix(1.0);
-
-glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector));
-glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix));
-

<glm/gtc/type_ptr.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::gtc::type_ptr::make_mat2 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 417 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::make_mat2x2().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::gtc::type_ptr::make_mat2x2 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 326 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -

Referenced by glm::gtc::type_ptr::make_mat2().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat2x3<T> glm::gtc::type_ptr::make_mat2x3 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 336 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat2x4<T> glm::gtc::type_ptr::make_mat2x4 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 346 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::gtc::type_ptr::make_mat3 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 425 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::make_mat3x3().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat3x2<T> glm::gtc::type_ptr::make_mat3x2 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 356 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::gtc::type_ptr::make_mat3x3 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 366 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -

Referenced by glm::gtc::type_ptr::make_mat3().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat3x4<T> glm::gtc::type_ptr::make_mat3x4 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 376 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::gtc::type_ptr::make_mat4 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 433 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::make_mat4x4().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat4x2<T> glm::gtc::type_ptr::make_mat4x2 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 387 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat4x3<T> glm::gtc::type_ptr::make_mat4x3 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 397 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::gtc::type_ptr::make_mat4x4 (T const *const ptr)
-
-
- -

Build a matrix from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 407 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -

Referenced by glm::gtc::type_ptr::make_mat4().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::gtc::type_ptr::make_vec2 (T const *const ptr)
-
-
- -

Build a vector from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 296 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::gtc::type_ptr::make_vec3 (T const *const ptr)
-
-
- -

Build a vector from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 306 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::gtc::type_ptr::make_vec4 (T const *const ptr)
-
-
- -

Build a vector from a pointer.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 316 of file type_ptr.hpp.

- -

References glm::gtc::type_ptr::value_ptr().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat4x4< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 157 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat4x3< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 288 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat4x3< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 278 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat3x4< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 267 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat3x4< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 256 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat4x2< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 245 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat2x4< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 223 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat2x4< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 212 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat2x2< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 113 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tvec3< T > & vec)
-
-
- -

Get the address of the vector content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 69 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat3x3< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 124 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tvec2< T > & vec)
-
-
- -

Get the address of the vector content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 47 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tvec2< T > const & vec)
-
- -
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tvec4< T > & vec)
-
-
- -

Get the address of the vector content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 91 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat4x4< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 146 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat3x3< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 135 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat4x2< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 234 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat3x2< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 201 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr (detail::tmat2x3< T > & mat)
-
-
- -

Get the address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 179 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tvec3< T > const & vec)
-
-
- -

Get the const address of the vector content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 58 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tvec4< T > const & vec)
-
-
- -

Get the const address of the vector content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 80 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat3x2< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 190 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat2x3< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 168 of file type_ptr.hpp.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr (detail::tmat2x2< T > const & mat)
-
-
- -

Get the const address of the matrix content.

-

From GLM_GTC_type_ptr extension.

- -

Definition at line 102 of file type_ptr.hpp.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00252.html b/doc/api-0.9.2/a00252.html deleted file mode 100644 index 9f669ea0..00000000 --- a/doc/api-0.9.2/a00252.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - -GLM_GTX_color_cast: Color conversion - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_color_cast: Color conversion
-
-
- -

Conversion between two color types. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-template<typename T >
gtc::type_precision::f16vec4 f16_abgr_cast (T c)
-template<typename T >
gtc::type_precision::f16vec4 f16_argb_cast (T c)
-template<typename T >
gtc::type_precision::f16vec4 f16_bgra_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_bgrx_cast (T c)
-template<typename T >
gtx::number_precision::f16vec1 f16_channel_cast (T a)
-template<typename T >
gtc::type_precision::f16vec4 f16_rgba_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_rgbx_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_xbgr_cast (T c)
-template<typename T >
gtc::type_precision::f16vec3 f16_xrgb_cast (T c)
-template<typename T >
gtc::type_precision::f32vec4 f32_abgr_cast (T c)
-template<typename T >
gtc::type_precision::f32vec4 f32_argb_cast (T c)
-template<typename T >
gtc::type_precision::f32vec4 f32_bgra_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_bgrx_cast (T c)
-template<typename T >
gtx::number_precision::f32vec1 f32_channel_cast (T a)
-template<typename T >
gtc::type_precision::f32vec4 f32_rgba_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_rgbx_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_xbgr_cast (T c)
-template<typename T >
gtc::type_precision::f32vec3 f32_xrgb_cast (T c)
-template<typename T >
gtc::type_precision::f64vec4 f64_abgr_cast (T c)
-template<typename T >
gtc::type_precision::f64vec4 f64_argb_cast (T c)
-template<typename T >
gtc::type_precision::f64vec4 f64_bgra_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_bgrx_cast (T c)
-template<typename T >
gtx::number_precision::f64vec1 f64_channel_cast (T a)
-template<typename T >
gtc::type_precision::f64vec4 f64_rgba_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_rgbx_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_xbgr_cast (T c)
-template<typename T >
gtc::type_precision::f64vec3 f64_xrgb_cast (T c)
template<typename valType >
gtc::type_precision::uint16 u16channel_cast (valType a)
-template<typename T >
gtc::type_precision::uint32 u32_abgr_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_argb_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_bgra_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_bgrx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_rgba_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_rgbx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_xbgr_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint32 u32_xrgb_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_abgr_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_argb_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_bgra_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_bgrx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_rgba_cast (const detail::tvec4< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_rgbx_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_xbgr_cast (const detail::tvec3< T > &c)
-template<typename T >
gtc::type_precision::uint64 u64_xrgb_cast (const detail::tvec3< T > &c)
template<typename valType >
gtc::type_precision::uint8 u8channel_cast (valType a)
-

Detailed Description

-

Conversion between two color types.

-

<glm/gtx/color_cast.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - -
gtc::type_precision::uint16 glm::gtx::color_cast::u16channel_cast (valType a)
-
-
- -

Conversion of a floating value into a 16bit unsigned int value.

-

From GLM_GTX_color_cast extension.

- -
-
- -
-
- - - - - - - - -
gtc::type_precision::uint8 glm::gtx::color_cast::u8channel_cast (valType a)
-
-
- -

Conversion of a floating value into a 8bit unsigned int value.

-

From GLM_GTX_color_cast extension.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00267.html b/doc/api-0.9.2/a00267.html deleted file mode 100644 index e5667619..00000000 --- a/doc/api-0.9.2/a00267.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - -GLM_GTX_integer: Extended integer functions - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_integer: Extended integer functions
-
-
- -

Add support for integer for core functions. -More...

- - - - - - - -

-Functions

template<typename genType >
genType factorial (genType const &x)
int mod (int x, int y)
int pow (int x, int y)
int sqrt (int x)
-

Detailed Description

-

Add support for integer for core functions.

-

<glm/gtx/integer.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - -
genType glm::gtx::integer::factorial (genType const & x)
-
-
- -

Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int glm::gtx::integer::mod (int x,
int y 
)
-
-
- -

Modulus.

-

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int glm::gtx::integer::pow (int x,
int y 
)
-
-
- -

Returns x raised to the y power.

-

From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - -
int glm::gtx::integer::sqrt (int x)
-
-
- -

Returns the positive square root of x.

-

From GLM_GTX_integer extension.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00276.html b/doc/api-0.9.2/a00276.html deleted file mode 100644 index 8691d833..00000000 --- a/doc/api-0.9.2/a00276.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - -GLM_GTX_norm: Vector norm calculations - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_norm: Vector norm calculations
-
-
- -

Various way to compute vector norms. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
distance2 (const T p0, const T p1)
template<typename T >
distance2 (const detail::tvec3< T > &p0, const detail::tvec3< T > &p1)
template<typename T >
distance2 (const detail::tvec4< T > &p0, const detail::tvec4< T > &p1)
template<typename T >
distance2 (const detail::tvec2< T > &p0, const detail::tvec2< T > &p1)
template<typename T >
l1Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
template<typename T >
l1Norm (const detail::tvec3< T > &v)
template<typename T >
l2Norm (const detail::tvec3< T > &x)
template<typename T >
l2Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
template<typename T >
length2 (const detail::tvec4< T > &x)
template<typename T >
length2 (const T x)
template<typename T >
length2 (const detail::tvec2< T > &x)
template<typename T >
length2 (const detail::tvec3< T > &x)
template<typename T >
length2 (const detail::tquat< T > &q)
template<typename T >
lxNorm (const detail::tvec3< T > &x, unsigned int Depth)
template<typename T >
lxNorm (const detail::tvec3< T > &x, const detail::tvec3< T > &y, unsigned int Depth)
-

Detailed Description

-

Various way to compute vector norms.

-

<glm/gtx/norm.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::distance2 (const T p0,
const T p1 
)
-
-
- -

Returns the squared distance between p0 and p1, i.e., length(p0 - p1).

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::distance2 (const detail::tvec3< T > & p0,
const detail::tvec3< T > & p1 
)
-
-
- -

Returns the squared distance between p0 and p1, i.e., length(p0 - p1).

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::distance2 (const detail::tvec4< T > & p0,
const detail::tvec4< T > & p1 
)
-
-
- -

Returns the squared distance between p0 and p1, i.e., length(p0 - p1).

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::distance2 (const detail::tvec2< T > & p0,
const detail::tvec2< T > & p1 
)
-
-
- -

Returns the squared distance between p0 and p1, i.e., length(p0 - p1).

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::l1Norm (const detail::tvec3< T > & x,
const detail::tvec3< T > & y 
)
-
-
- -

Returns the L1 norm between x and y.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
T glm::gtx::norm::l1Norm (const detail::tvec3< T > & v)
-
-
- -

Returns the L1 norm of v.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
T glm::gtx::norm::l2Norm (const detail::tvec3< T > & x)
-
-
- -

Returns the L2 norm of v.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::l2Norm (const detail::tvec3< T > & x,
const detail::tvec3< T > & y 
)
-
-
- -

Returns the L2 norm between x and y.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
T glm::gtx::norm::length2 (const detail::tvec4< T > & x)
-
-
- -

Returns the squared length of x.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
T glm::gtx::norm::length2 (const T x)
-
-
- -

Returns the squared length of x.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
T glm::gtx::norm::length2 (const detail::tvec2< T > & x)
-
-
- -

Returns the squared length of x.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
T glm::gtx::norm::length2 (const detail::tvec3< T > & x)
-
-
- -

Returns the squared length of x.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
T glm::gtx::norm::length2 (const detail::tquat< T > & q)
-
-
- -

Returns the squared length of x.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::lxNorm (const detail::tvec3< T > & x,
unsigned int Depth 
)
-
-
- -

Returns the L norm of v.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
T glm::gtx::norm::lxNorm (const detail::tvec3< T > & x,
const detail::tvec3< T > & y,
unsigned int Depth 
)
-
-
- -

Returns the L norm between x and y.

-

From GLM_GTX_norm extension.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00283.html b/doc/api-0.9.2/a00283.html deleted file mode 100644 index 59cd53c7..00000000 --- a/doc/api-0.9.2/a00283.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - -GLM_GTX_perpendicular: Perpendicular - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_perpendicular: Perpendicular
-
-
- -

Perpendicular of a vector from other one. -More...

- - - - - - - - -

-Functions

template<typename T >
detail::tvec2< T > perp (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal)
template<typename T >
detail::tvec4< T > perp (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal)
template<typename T >
detail::tvec3< T > perp (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal)
-

Detailed Description

-

Perpendicular of a vector from other one.

-

<glm/gtx/perpendicular.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
detail::tvec2<T> glm::gtx::perpendicular::perp (detail::tvec2< T > const & x,
detail::tvec2< T > const & Normal 
)
-
-
- -

Projects x a perpendicular axis of Normal.

-

From GLM_GTX_perpendicular extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::tvec4<T> glm::gtx::perpendicular::perp (detail::tvec4< T > const & x,
detail::tvec4< T > const & Normal 
)
-
-
- -

Projects x a perpendicular axis of Normal.

-

From GLM_GTX_perpendicular extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::tvec3<T> glm::gtx::perpendicular::perp (detail::tvec3< T > const & x,
detail::tvec3< T > const & Normal 
)
-
-
- -

Projects x a perpendicular axis of Normal.

-

From GLM_GTX_perpendicular extension.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00285.html b/doc/api-0.9.2/a00285.html deleted file mode 100644 index 2261c21d..00000000 --- a/doc/api-0.9.2/a00285.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - -GLM_GTX_projection: Projection - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_projection: Projection
-
-
- -

Projection of a vector to other one. -More...

- - - - - - - - -

-Functions

template<typename T >
detail::tvec2< T > proj (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal)
template<typename T >
detail::tvec4< T > proj (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal)
template<typename T >
detail::tvec3< T > proj (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal)
-

Detailed Description

-

Projection of a vector to other one.

-

<glm/gtx/projection.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
detail::tvec2<T> glm::gtx::projection::proj (detail::tvec2< T > const & x,
detail::tvec2< T > const & Normal 
)
-
-
- -

Projects x on Normal.

-

From GLM_GTX_projection extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::tvec4<T> glm::gtx::projection::proj (detail::tvec4< T > const & x,
detail::tvec4< T > const & Normal 
)
-
-
- -

Projects x on Normal.

-

From GLM_GTX_projection extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::tvec3<T> glm::gtx::projection::proj (detail::tvec3< T > const & x,
detail::tvec3< T > const & Normal 
)
-
-
- -

Projects x on Normal.

-

From GLM_GTX_projection extension.

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00291.html b/doc/api-0.9.2/a00291.html deleted file mode 100644 index 6b1cb4e0..00000000 --- a/doc/api-0.9.2/a00291.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - -GLM_GTX_simd_mat4: SIMD mat4 type and functions - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_simd_mat4: SIMD mat4 type and functions
-
-
- -

SIMD implementation of mat4 type. -More...

- - - - - - - - - -

-Functions

float determinant (detail::fmat4x4SIMD const &m)
 GLM_ALIGNED_STRUCT (16) fmat4x4SIMD
detail::fmat4x4SIMD inverse (detail::fmat4x4SIMD const &m)
detail::tmat4x4< float > mat4_cast (detail::fmat4x4SIMD const &x)
detail::fmat4x4SIMD matrixCompMult (detail::fmat4x4SIMD const &x, detail::fmat4x4SIMD const &y)
detail::fmat4x4SIMD outerProduct (detail::fvec4SIMD const &c, detail::fvec4SIMD const &r)
detail::fmat4x4SIMD transpose (detail::fmat4x4SIMD const &x)
-

Detailed Description

-

SIMD implementation of mat4 type.

-

<glm/gtx/simd_mat4.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - -
float glm::gtx::simd_mat4::determinant (detail::fmat4x4SIMD const & m)
-
-
- -

Return the determinant of a mat4 matrix.

-

(From GLM_GTX_simd_mat4 extension).

- -
-
- -
-
- - - - - - - - -
GLM_ALIGNED_STRUCT (16 )
-
-
- -

4x4 Matrix implemented using SIMD SEE intrinsics.

-

4-dimensional vector implemented using SIMD SEE intrinsics.

- -

Definition at line 36 of file simd_mat4.hpp.

- -
-
- -
-
- - - - - - - - -
detail::fmat4x4SIMD glm::gtx::simd_mat4::inverse (detail::fmat4x4SIMD const & m)
-
-
- -

Return the inverse of a mat4 matrix.

-

(From GLM_GTX_simd_mat4 extension).

- -
-
- -
-
- - - - - - - - -
detail::tmat4x4<float> glm::gtx::simd_mat4::mat4_cast (detail::fmat4x4SIMD const & x)
-
-
- -

Convert a simdMat4 to a mat4.

-

(From GLM_GTX_simd_mat4 extension)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fmat4x4SIMD glm::gtx::simd_mat4::matrixCompMult (detail::fmat4x4SIMD const & x,
detail::fmat4x4SIMD const & y 
)
-
-
- -

Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].

-

(From GLM_GTX_simd_mat4 extension).

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fmat4x4SIMD glm::gtx::simd_mat4::outerProduct (detail::fvec4SIMD const & c,
detail::fvec4SIMD const & r 
)
-
-
- -

Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.

-

(From GLM_GTX_simd_mat4 extension).

- -
-
- -
-
- - - - - - - - -
detail::fmat4x4SIMD glm::gtx::simd_mat4::transpose (detail::fmat4x4SIMD const & x)
-
-
- -

Returns the transposed matrix of x (From GLM_GTX_simd_mat4 extension).

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00292.html b/doc/api-0.9.2/a00292.html deleted file mode 100644 index 224a55ba..00000000 --- a/doc/api-0.9.2/a00292.html +++ /dev/null @@ -1,1069 +0,0 @@ - - - - -GLM_GTX_simd_vec4: SIMD vec4 type and functions - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_simd_vec4: SIMD vec4 type and functions
-
-
- -

SIMD implementation of vec4 type. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

detail::fvec4SIMD abs (detail::fvec4SIMD const &x)
detail::fvec4SIMD ceil (detail::fvec4SIMD const &x)
detail::fvec4SIMD clamp (detail::fvec4SIMD const &x, detail::fvec4SIMD const &minVal, detail::fvec4SIMD const &maxVal)
detail::fvec4SIMD cross (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
float distance (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1)
detail::fvec4SIMD distance4 (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1)
detail::fvec4SIMD dot4 (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD fastInversesqrt (detail::fvec4SIMD const &x)
float fastLength (detail::fvec4SIMD const &x)
detail::fvec4SIMD fastLength4 (detail::fvec4SIMD const &x)
detail::fvec4SIMD fastNormalize (detail::fvec4SIMD const &x)
detail::fvec4SIMD fastSqrt (detail::fvec4SIMD const &x)
detail::fvec4SIMD floor (detail::fvec4SIMD const &x)
detail::fvec4SIMD fma (detail::fvec4SIMD const &a, detail::fvec4SIMD const &b, detail::fvec4SIMD const &c)
detail::fvec4SIMD fract (detail::fvec4SIMD const &x)
detail::fvec4SIMD inversesqrt (detail::fvec4SIMD const &x)
float length (detail::fvec4SIMD const &x)
detail::fvec4SIMD length4 (detail::fvec4SIMD const &x)
detail::fvec4SIMD max (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD min (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD mix (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y, detail::fvec4SIMD const &a)
detail::fvec4SIMD mod (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD mod (detail::fvec4SIMD const &x, float const &y)
float niceLength (detail::fvec4SIMD const &x)
detail::fvec4SIMD niceLength4 (detail::fvec4SIMD const &x)
detail::fvec4SIMD niceSqrt (detail::fvec4SIMD const &x)
detail::fvec4SIMD normalize (detail::fvec4SIMD const &x)
detail::fvec4SIMD reflect (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N)
detail::fvec4SIMD refract (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N, float const &eta)
detail::fvec4SIMD round (detail::fvec4SIMD const &x)
detail::fvec4SIMD sign (detail::fvec4SIMD const &x)
float simdDot (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y)
detail::fvec4SIMD simdFaceforward (detail::fvec4SIMD const &N, detail::fvec4SIMD const &I, detail::fvec4SIMD const &Nref)
detail::fvec4SIMD smoothstep (detail::fvec4SIMD const &edge0, detail::fvec4SIMD const &edge1, detail::fvec4SIMD const &x)
detail::fvec4SIMD sqrt (detail::fvec4SIMD const &x)
detail::fvec4SIMD step (detail::fvec4SIMD const &edge, detail::fvec4SIMD const &x)
detail::fvec4SIMD trunc (detail::fvec4SIMD const &x)
detail::tvec4< float > vec4_cast (detail::fvec4SIMD const &x)
-

Detailed Description

-

SIMD implementation of vec4 type.

-

<glm/gtx/simd_vec4.hpp> need to be included to use these functionalities.

-

Function Documentation

- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::abs (detail::fvec4SIMD const & x)
-
-
- -

Returns x if x >= 0; otherwise, it returns -x.

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::ceil (detail::fvec4SIMD const & x)
-
-
- -

Returns a value equal to the nearest integer to x.

-

A fractional part of 0.5 will round toward the nearest even integer. (Both 3.5 and 4.5 for x will return 4.0.) (From GLM_GTX_simd_vec4 extension, common function) Returns a value equal to the nearest integer that is greater than or equal to x. (From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::clamp (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & minVal,
detail::fvec4SIMD const & maxVal 
)
-
-
- -

Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal.

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::cross (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y 
)
-
-
- -

Returns the cross product of x and y.

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
float glm::gtx::simd_vec4::distance (detail::fvec4SIMD const & p0,
detail::fvec4SIMD const & p1 
)
-
-
- -

Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::distance4 (detail::fvec4SIMD const & p0,
detail::fvec4SIMD const & p1 
)
-
-
- -

Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::dot4 (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y 
)
-
-
- -

Returns the dot product of x and y, i.e., result = x * y.

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::fastInversesqrt (detail::fvec4SIMD const & x)
-
-
- -

Returns the reciprocal of the positive square root of x.

-

Faster than inversesqrt but less accurate. (From GLM_GTX_simd_vec4 extension, exponential function)

- -
-
- -
-
- - - - - - - - -
float glm::gtx::simd_vec4::fastLength (detail::fvec4SIMD const & x)
-
-
- -

Returns the length of x, i.e., sqrt(x * x).

-

Less accurate but much faster than simdLength. (From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::fastLength4 (detail::fvec4SIMD const & x)
-
-
- -

Returns the length of x, i.e., sqrt(x * x).

-

Less accurate but much faster than simdLength4. (From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::fastNormalize (detail::fvec4SIMD const & x)
-
-
- -

Returns a vector in the same direction as x but with length of 1.

-

Less accurate but much faster than simdNormalize. (From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::fastSqrt (detail::fvec4SIMD const & x)
-
-
- -

Returns the positive square root of x Less accurate but much faster than sqrt.

-

(From GLM_GTX_simd_vec4 extension, exponential function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::floor (detail::fvec4SIMD const & x)
-
-
- -

Returns a value equal to the nearest integer that is less then or equal to x.

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::fma (detail::fvec4SIMD const & a,
detail::fvec4SIMD const & b,
detail::fvec4SIMD const & c 
)
-
-
- -

Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.

-

Returns false otherwise, including for implementations with no NaN representations. (From GLM_GTX_simd_vec4 extension, common function) Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. Returns false otherwise, including for implementations with no infinity representations. (From GLM_GTX_simd_vec4 extension, common function) Returns a signed or unsigned integer value representing the encoding of a floating-point value. The floatingpoint value's bit-level representation is preserved. (From GLM_GTX_simd_vec4 extension, common function) Returns a floating-point value corresponding to a signed or unsigned integer encoding of a floating-point value. If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved. (From GLM_GTX_simd_vec4 extension, common function) Computes and returns a * b + c. (From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::fract (detail::fvec4SIMD const & x)
-
-
- -

Return x - floor(x).

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::inversesqrt (detail::fvec4SIMD const & x)
-
-
- -

Returns the reciprocal of the positive square root of x.

-

(From GLM_GTX_simd_vec4 extension, exponential function)

- -
-
- -
-
- - - - - - - - -
float glm::gtx::simd_vec4::length (detail::fvec4SIMD const & x)
-
-
- -

Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent) The significand is returned by the function and the exponent is returned in the parameter exp.

-

For a floating-point value of zero, the significant and exponent are both zero. For a floating-point value that is an infinity or is not a number, the results are undefined. (From GLM_GTX_simd_vec4 extension, common function) Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent) If this product is too large to be represented in the floating-point type, the result is undefined. (From GLM_GTX_simd_vec4 extension, common function) Returns the length of x, i.e., sqrt(x * x). (From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::length4 (detail::fvec4SIMD const & x)
-
-
- -

Returns the length of x, i.e., sqrt(x * x).

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::max (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y 
)
-
-
- -

Returns y if x < y; otherwise, it returns x.

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::min (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y 
)
-
-
- -

Returns the fractional part of x and sets i to the integer part (as a whole number floating point value).

-

Both the return value and the output parameter will have the same sign as x. (From GLM_GTX_simd_vec4 extension, common function) Returns y if y < x; otherwise, it returns x. (From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::mix (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y,
detail::fvec4SIMD const & a 
)
-
-
- -

(From GLM_GTX_simd_vec4 extension, common function)

-
Returns:
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1].
-
-If genTypeU is a boolean scalar or vector: Selects which vector each returned component comes from. For a component of a that is false, the corresponding component of x is returned. For a component of a that is true, the corresponding component of y is returned. Components of x and y that are not selected are allowed to be invalid floating point values and will have no effect on the results. Thus, this provides different functionality than genType mix(genType x, genType y, genType(a)) where a is a Boolean vector.
-

From GLSL 1.30.08 specification, section 8.3

-
Parameters:
- - - - -
[in]xFloating point scalar or vector.
[in]yFloating point scalar or vector.
[in]aFloating point or boolean scalar or vector.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::mod (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y 
)
-
-
- -

Modulus.

-

Returns x - y * floor(x / y) for each component in x using the floating point value y. (From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::mod (detail::fvec4SIMD const & x,
float const & y 
)
-
-
- -

Modulus.

-

Returns x - y * floor(x / y) for each component in x using the floating point value y. (From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
float glm::gtx::simd_vec4::niceLength (detail::fvec4SIMD const & x)
-
-
- -

Returns the length of x, i.e., sqrt(x * x).

-

Slightly more accurate but much slower than simdLength. (From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::niceLength4 (detail::fvec4SIMD const & x)
-
-
- -

Returns the length of x, i.e., sqrt(x * x).

-

Slightly more accurate but much slower than simdLength4. (From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::niceSqrt (detail::fvec4SIMD const & x)
-
-
- -

Returns the positive square root of x with the nicest quality but very slow.

-

Slightly more accurate but much slower than simdSqrt. (From GLM_GTX_simd_vec4 extension, exponential function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::normalize (detail::fvec4SIMD const & x)
-
-
- -

Returns a vector in the same direction as x but with length of 1.

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::reflect (detail::fvec4SIMD const & I,
detail::fvec4SIMD const & N 
)
-
-
- -

For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::refract (detail::fvec4SIMD const & I,
detail::fvec4SIMD const & N,
float const & eta 
)
-
-
- -

For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::round (detail::fvec4SIMD const & x)
-
-
- -

Returns a value equal to the nearest integer to x.

-

The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest. This includes the possibility that round(x) returns the same value as roundEven(x) for all values of x. (From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::sign (detail::fvec4SIMD const & x)
-
-
- -

Returns 1.0 if x > 0, 0.0 if x = 0, or -1.0 if x < 0.

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
float glm::gtx::simd_vec4::simdDot (detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y 
)
-
-
- -

Returns the dot product of x and y, i.e., result = x * y.

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::simdFaceforward (detail::fvec4SIMD const & N,
detail::fvec4SIMD const & I,
detail::fvec4SIMD const & Nref 
)
-
-
- -

If dot(Nref, I) < 0.0, return N, otherwise, return -N.

-

(From GLM_GTX_simd_vec4 extension, geometry functions)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::smoothstep (detail::fvec4SIMD const & edge0,
detail::fvec4SIMD const & edge1,
detail::fvec4SIMD const & x 
)
-
-
- -

Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1.

-

This is useful in cases where you would want a threshold function with a smooth transition. This is equivalent to: genType t; t = clamp ((x – edge0) / (edge1 – edge0), 0, 1); return t * t * (3 – 2 * t); Results are undefined if edge0 >= edge1. (From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::sqrt (detail::fvec4SIMD const & x)
-
-
- -

Returns the positive square root of x.

-

(From GLM_GTX_simd_vec4 extension, exponential function)

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::step (detail::fvec4SIMD const & edge,
detail::fvec4SIMD const & x 
)
-
-
- -

Returns 0.0 if x < edge, otherwise it returns 1.0.

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
detail::fvec4SIMD glm::gtx::simd_vec4::trunc (detail::fvec4SIMD const & x)
-
-
- -

Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x.

-

(From GLM_GTX_simd_vec4 extension, common function)

- -
-
- -
-
- - - - - - - - -
detail::tvec4<float> glm::gtx::simd_vec4::vec4_cast (detail::fvec4SIMD const & x)
-
-
- -

Convert a simdVec4 to a vec4.

-

(From GLM_GTX_simd_vec4 extension)

- -
-
-
- - - diff --git a/doc/api-0.9.2/a00297.html b/doc/api-0.9.2/a00297.html deleted file mode 100644 index 758754c7..00000000 --- a/doc/api-0.9.2/a00297.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - -GLM_GTX_unsigned_int: Unsigned int - - - - - -
-
- - - - - - -
-
- -
-
- -
-
GLM_GTX_unsigned_int: Unsigned int
-
-
- -

Add support for unsigned integer for core functions. -More...

- - - - - - - -

-Typedefs

typedef signed int sint

-Functions

uint mod (uint x, uint y)
uint pow (uint x, uint y)
uint sqrt (uint x)
-

Detailed Description

-

Add support for unsigned integer for core functions.

-

<glm/gtx/unsigned_int.hpp> need to be included to use these functionalities.

-

Typedef Documentation

- -
-
- - - - -
typedef signed int sint
-
-
- -

32bit signed integer.

-

From GLM_GTX_unsigned_int extension.

- -

Definition at line 36 of file unsigned_int.hpp.

- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
uint glm::gtx::unsigned_int::mod (uint x,
uint y 
)
-
-
- -

Modulus.

-

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_unsigned_int extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
uint glm::gtx::unsigned_int::pow (uint x,
uint y 
)
-
-
- -

Returns x raised to the y power.

-

From GLM_GTX_unsigned_int extension.

- -
-
- -
-
- - - - - - - - -
uint glm::gtx::unsigned_int::sqrt (uint x)
-
-
- -

Returns the positive square root of x.

-

From GLM_GTX_unsigned_int extension.

- -
-
-
- - - diff --git a/doc/api-0.9.2/classes.html b/doc/api-0.9.2/classes.html deleted file mode 100644 index 9b4c471b..00000000 --- a/doc/api-0.9.2/classes.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - -Class Index - - - - - -
-
- - - - - - -
-
- - -
-
-
-
Class Index
-
-
- - -
  T  
-
tmat2x3 (glm::detail)   tmat3x3 (glm::detail)   tmat4x3 (glm::detail)   tvec2 (glm::detail)   
thalf (glm::detail)   tmat2x4 (glm::detail)   tmat3x4 (glm::detail)   tmat4x4 (glm::detail)   tvec3 (glm::detail)   
tmat2x2 (glm::detail)   tmat3x2 (glm::detail)   tmat4x2 (glm::detail)   tquat (glm::detail)   tvec4 (glm::detail)   
-
- - - diff --git a/doc/api-0.9.2/files.html b/doc/api-0.9.2/files.html deleted file mode 100644 index af49113d..00000000 --- a/doc/api-0.9.2/files.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - -File List - - - - - -
-
- - - - - - -
-
- - -
-
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_detail.hpp [code]
_fixes.hpp [code]
_swizzle.hpp [code]
associated_min_max.hpp [code]
bit.hpp [code]
closest_point.hpp [code]
color_cast.hpp [code]
color_space.hpp [code]
color_space_YCoCg.hpp [code]
compatibility.hpp [code]
component_wise.hpp [code]
coreModules.doxy [code]
epsilon.hpp [code]
euler_angles.hpp [code]
ext.hpp [code]
extend.hpp [code]
extented_min_max.hpp [code]
fast_exponential.hpp [code]
fast_square_root.hpp [code]
fast_trigonometry.hpp [code]
func_common.hpp [code]
func_exponential.hpp [code]
func_geometric.hpp [code]
func_integer.hpp [code]
func_matrix.hpp [code]
func_noise.hpp [code]
func_packing.hpp [code]
func_trigonometric.hpp [code]
func_vector_relational.hpp [code]
glm.hpp [code]
gradient_paint.hpp [code]
gtcModules.doxy [code]
gtxModules.doxy [code]
half_float.hpp [code]
handed_coordinate_space.hpp [code]
hint.hpp [code]
inertia.hpp [code]
int_10_10_10_2.hpp [code]
integer.hpp [code]
intersect.hpp [code]
intrinsic_common.hpp [code]
intrinsic_exponential.hpp [code]
intrinsic_geometric.hpp [code]
intrinsic_matrix.hpp [code]
intrinsic_trigonometric.hpp [code]
intrinsic_vector_relational.hpp [code]
log_base.hpp [code]
man.doxy [code]
matrix_access.hpp [code]
matrix_cross_product.hpp [code]
matrix_integer.hpp [code]
matrix_interpolation.hpp [code]
matrix_inverse.hpp [code]
matrix_major_storage.hpp [code]
matrix_operation.hpp [code]
matrix_query.hpp [code]
matrix_transform.hpp [code]
mixed_product.hpp [code]
multiple.hpp [code]
noise.hpp [code]
norm.hpp [code]
normal.hpp [code]
normalize_dot.hpp [code]
number_precision.hpp [code]
ocl_type.hpp [code]
optimum_pow.hpp [code]
orthonormalize.hpp [code]
pages.doxy [code]
perpendicular.hpp [code]
polar_coordinates.hpp [code]
projection.hpp [code]
gtc/quaternion.hpp [code]
gtx/quaternion.hpp [code]
random.hpp [code]
raw_data.hpp [code]
reciprocal.hpp [code]
rotate_vector.hpp [code]
setup.hpp [code]
simd_mat4.hpp [code]
simd_vec4.hpp [code]
simplex.hpp [code]
spline.hpp [code]
std_based_type.hpp [code]
string_cast.hpp [code]
swizzle.hpp [code]
transform.hpp [code]
transform2.hpp [code]
type.hpp [code]
type_float.hpp [code]
type_gentype.hpp [code]
type_half.hpp [code]
type_int.hpp [code]
type_mat.hpp [code]
type_mat2x2.hpp [code]
type_mat2x3.hpp [code]
type_mat2x4.hpp [code]
type_mat3x2.hpp [code]
type_mat3x3.hpp [code]
type_mat3x4.hpp [code]
type_mat4x2.hpp [code]
type_mat4x3.hpp [code]
type_mat4x4.hpp [code]
type_precision.hpp [code]
type_ptr.hpp [code]
type_size.hpp [code]
type_vec.hpp [code]
type_vec1.hpp [code]
type_vec2.hpp [code]
type_vec3.hpp [code]
type_vec4.hpp [code]
ulp.hpp [code]
unsigned_int.hpp [code]
vec1.hpp [code]
vector_access.hpp [code]
vector_angle.hpp [code]
vector_query.hpp [code]
verbose_operator.hpp [code]
virtrevModules.doxy [code]
wrap.hpp [code]
xstream.hpp [code]
-
- - - diff --git a/doc/api-0.9.2/jquery.js b/doc/api-0.9.2/jquery.js deleted file mode 100644 index c052173a..00000000 --- a/doc/api-0.9.2/jquery.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * jQuery JavaScript Library v1.3.2 - * http://jquery.com/ - * - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - * - * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) - * Revision: 6246 - */ -(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) -{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() -{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); -/* - * jQuery UI 1.7.2 - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI - */ -jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* * jQuery UI Resizable 1.7.2 - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI/Resizables - * - * Depends: - * ui.core.js - */ -(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f
');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)) -{s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);; -/** - * jQuery.ScrollTo - Easy element scrolling using jQuery. - * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com - * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php). - * Date: 2/8/2008 - * @author Ariel Flesler - * @version 1.3.2 - */ -;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); - diff --git a/doc/api-0.9.2/modules.html b/doc/api-0.9.2/modules.html deleted file mode 100644 index 1ba2289c..00000000 --- a/doc/api-0.9.2/modules.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -Modules - - - - - -
-
- - - - - - -
-
- -
-
-
-
Modules
-
-
-
Here is a list of all modules:
-
- - - diff --git a/doc/api-0.9.2/namespacemembers.html b/doc/api-0.9.2/namespacemembers.html deleted file mode 100644 index 85e78134..00000000 --- a/doc/api-0.9.2/namespacemembers.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- a -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x62.html b/doc/api-0.9.2/namespacemembers_0x62.html deleted file mode 100644 index 8877cc03..00000000 --- a/doc/api-0.9.2/namespacemembers_0x62.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- b -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x63.html b/doc/api-0.9.2/namespacemembers_0x63.html deleted file mode 100644 index 3e1c5d07..00000000 --- a/doc/api-0.9.2/namespacemembers_0x63.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- c -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x64.html b/doc/api-0.9.2/namespacemembers_0x64.html deleted file mode 100644 index f5a75a46..00000000 --- a/doc/api-0.9.2/namespacemembers_0x64.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- d -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x65.html b/doc/api-0.9.2/namespacemembers_0x65.html deleted file mode 100644 index 9811cf5f..00000000 --- a/doc/api-0.9.2/namespacemembers_0x65.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- e -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x66.html b/doc/api-0.9.2/namespacemembers_0x66.html deleted file mode 100644 index bd3a989b..00000000 --- a/doc/api-0.9.2/namespacemembers_0x66.html +++ /dev/null @@ -1,530 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- f -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x67.html b/doc/api-0.9.2/namespacemembers_0x67.html deleted file mode 100644 index c01cbdf0..00000000 --- a/doc/api-0.9.2/namespacemembers_0x67.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- g -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x68.html b/doc/api-0.9.2/namespacemembers_0x68.html deleted file mode 100644 index 56731e11..00000000 --- a/doc/api-0.9.2/namespacemembers_0x68.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- h -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x69.html b/doc/api-0.9.2/namespacemembers_0x69.html deleted file mode 100644 index 7626e5f1..00000000 --- a/doc/api-0.9.2/namespacemembers_0x69.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- i -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x6c.html b/doc/api-0.9.2/namespacemembers_0x6c.html deleted file mode 100644 index de115a72..00000000 --- a/doc/api-0.9.2/namespacemembers_0x6c.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- l -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x6d.html b/doc/api-0.9.2/namespacemembers_0x6d.html deleted file mode 100644 index ba0f9687..00000000 --- a/doc/api-0.9.2/namespacemembers_0x6d.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- m -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x6e.html b/doc/api-0.9.2/namespacemembers_0x6e.html deleted file mode 100644 index d1aa29cd..00000000 --- a/doc/api-0.9.2/namespacemembers_0x6e.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- n -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x6f.html b/doc/api-0.9.2/namespacemembers_0x6f.html deleted file mode 100644 index f8460a1f..00000000 --- a/doc/api-0.9.2/namespacemembers_0x6f.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- o -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x70.html b/doc/api-0.9.2/namespacemembers_0x70.html deleted file mode 100644 index 53c9ac31..00000000 --- a/doc/api-0.9.2/namespacemembers_0x70.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- p -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x71.html b/doc/api-0.9.2/namespacemembers_0x71.html deleted file mode 100644 index 9dc06e76..00000000 --- a/doc/api-0.9.2/namespacemembers_0x71.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- q -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x72.html b/doc/api-0.9.2/namespacemembers_0x72.html deleted file mode 100644 index a345c85b..00000000 --- a/doc/api-0.9.2/namespacemembers_0x72.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- r -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x73.html b/doc/api-0.9.2/namespacemembers_0x73.html deleted file mode 100644 index 33961257..00000000 --- a/doc/api-0.9.2/namespacemembers_0x73.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- s -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x74.html b/doc/api-0.9.2/namespacemembers_0x74.html deleted file mode 100644 index 688f03ee..00000000 --- a/doc/api-0.9.2/namespacemembers_0x74.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- t -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x75.html b/doc/api-0.9.2/namespacemembers_0x75.html deleted file mode 100644 index 0a407e2f..00000000 --- a/doc/api-0.9.2/namespacemembers_0x75.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- u -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x76.html b/doc/api-0.9.2/namespacemembers_0x76.html deleted file mode 100644 index 40cb6936..00000000 --- a/doc/api-0.9.2/namespacemembers_0x76.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- v -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x77.html b/doc/api-0.9.2/namespacemembers_0x77.html deleted file mode 100644 index 2da2a2a8..00000000 --- a/doc/api-0.9.2/namespacemembers_0x77.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- w -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_0x79.html b/doc/api-0.9.2/namespacemembers_0x79.html deleted file mode 100644 index 76afddbc..00000000 --- a/doc/api-0.9.2/namespacemembers_0x79.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-
Here is a list of all documented namespace members with links to the namespaces they belong to:
- -

- y -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func.html b/doc/api-0.9.2/namespacemembers_func.html deleted file mode 100644 index 7ee49704..00000000 --- a/doc/api-0.9.2/namespacemembers_func.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
- - - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x62.html b/doc/api-0.9.2/namespacemembers_func_0x62.html deleted file mode 100644 index 99ac7770..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x62.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- b -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x63.html b/doc/api-0.9.2/namespacemembers_func_0x63.html deleted file mode 100644 index 8f803f8a..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x63.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- c -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x64.html b/doc/api-0.9.2/namespacemembers_func_0x64.html deleted file mode 100644 index 936b0221..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x64.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- d -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x65.html b/doc/api-0.9.2/namespacemembers_func_0x65.html deleted file mode 100644 index 9a1a5e13..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x65.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- e -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x66.html b/doc/api-0.9.2/namespacemembers_func_0x66.html deleted file mode 100644 index 0a1cff6c..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x66.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- f -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x67.html b/doc/api-0.9.2/namespacemembers_func_0x67.html deleted file mode 100644 index 4696e10c..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x67.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- g -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x68.html b/doc/api-0.9.2/namespacemembers_func_0x68.html deleted file mode 100644 index 20e755ff..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x68.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- h -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x69.html b/doc/api-0.9.2/namespacemembers_func_0x69.html deleted file mode 100644 index d0251eac..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x69.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- i -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x6c.html b/doc/api-0.9.2/namespacemembers_func_0x6c.html deleted file mode 100644 index 26937899..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x6c.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- l -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x6d.html b/doc/api-0.9.2/namespacemembers_func_0x6d.html deleted file mode 100644 index e7c66d56..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x6d.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- m -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x6e.html b/doc/api-0.9.2/namespacemembers_func_0x6e.html deleted file mode 100644 index 290db3e6..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x6e.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- n -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x6f.html b/doc/api-0.9.2/namespacemembers_func_0x6f.html deleted file mode 100644 index 0a31dbab..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x6f.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- o -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x70.html b/doc/api-0.9.2/namespacemembers_func_0x70.html deleted file mode 100644 index d8de0be7..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x70.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- p -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x71.html b/doc/api-0.9.2/namespacemembers_func_0x71.html deleted file mode 100644 index f1b5bf85..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x71.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- q -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x72.html b/doc/api-0.9.2/namespacemembers_func_0x72.html deleted file mode 100644 index 67a7b184..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x72.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
- - - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x73.html b/doc/api-0.9.2/namespacemembers_func_0x73.html deleted file mode 100644 index 4842f874..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x73.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- s -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x74.html b/doc/api-0.9.2/namespacemembers_func_0x74.html deleted file mode 100644 index 63736415..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x74.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- t -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x75.html b/doc/api-0.9.2/namespacemembers_func_0x75.html deleted file mode 100644 index 5f88ff36..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x75.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- u -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x76.html b/doc/api-0.9.2/namespacemembers_func_0x76.html deleted file mode 100644 index 131232b3..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x76.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- v -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_func_0x79.html b/doc/api-0.9.2/namespacemembers_func_0x79.html deleted file mode 100644 index f2241abb..00000000 --- a/doc/api-0.9.2/namespacemembers_func_0x79.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- y -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type.html b/doc/api-0.9.2/namespacemembers_type.html deleted file mode 100644 index 23b424df..00000000 --- a/doc/api-0.9.2/namespacemembers_type.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- b -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x63.html b/doc/api-0.9.2/namespacemembers_type_0x63.html deleted file mode 100644 index 414ec714..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x63.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- c -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x64.html b/doc/api-0.9.2/namespacemembers_type_0x64.html deleted file mode 100644 index fb32c617..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x64.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- d -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x66.html b/doc/api-0.9.2/namespacemembers_type_0x66.html deleted file mode 100644 index 36281675..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x66.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- f -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x68.html b/doc/api-0.9.2/namespacemembers_type_0x68.html deleted file mode 100644 index 750f2d5f..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x68.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- h -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x69.html b/doc/api-0.9.2/namespacemembers_type_0x69.html deleted file mode 100644 index 3e417867..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x69.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- i -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x6c.html b/doc/api-0.9.2/namespacemembers_type_0x6c.html deleted file mode 100644 index 535b1c32..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x6c.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- l -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x6d.html b/doc/api-0.9.2/namespacemembers_type_0x6d.html deleted file mode 100644 index 22950484..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x6d.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- m -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x71.html b/doc/api-0.9.2/namespacemembers_type_0x71.html deleted file mode 100644 index 4c2fef8e..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x71.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- q -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x73.html b/doc/api-0.9.2/namespacemembers_type_0x73.html deleted file mode 100644 index 60aa1ae3..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x73.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- s -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x75.html b/doc/api-0.9.2/namespacemembers_type_0x75.html deleted file mode 100644 index 37058c15..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x75.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- u -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x76.html b/doc/api-0.9.2/namespacemembers_type_0x76.html deleted file mode 100644 index 2a0f1378..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x76.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- v -

-
- - - diff --git a/doc/api-0.9.2/namespacemembers_type_0x77.html b/doc/api-0.9.2/namespacemembers_type_0x77.html deleted file mode 100644 index 729660e2..00000000 --- a/doc/api-0.9.2/namespacemembers_type_0x77.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -Namespace Members - - - - - -
-
- - - - - - -
-
- - - - -
-
-  - -

- w -

-
- - - diff --git a/doc/api-0.9.2/namespaces.html b/doc/api-0.9.2/namespaces.html deleted file mode 100644 index b90514b5..00000000 --- a/doc/api-0.9.2/namespaces.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -Namespace List - - - - - -
-
- - - - - - -
-
- - -
-
-
-
Namespace List
-
-
-
Here is a list of all documented namespaces with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
glmGLM namespace, it contains all GLSL based features
glm::coreGLM core. Namespace that includes all the feature define by GLSL 4.10.6 specification. This namespace is included in glm namespace
glm::core::functionSome of the functions defined in section 8 Built-in Functions of GLSL 1.30.8 specification
glm::core::function::exponentialDefine all exponential functions from Section 8.2 of GLSL 1.30.8 specification. Included in glm namespace
glm::core::function::integerDefine integer functions from Section 8.8 of GLSL 4.00.8 specification
glm::core::function::matrixDefine all matrix functions from Section 8.5 of GLSL 1.30.8 specification. Included in glm namespace
glm::core::function::packingDefine packing functions from section 8.4 floating-point pack and unpack functions of GLSL 4.00.8 specification
glm::core::function::trigonometricDefine Angle and trigonometry functions from Section 8.1 of GLSL 1.30.8 specification
glm::core::function::vector_relationalDefine vector relational functions from Section 8.6 of GLSL 1.30.8 specification
glm::core::typeScalar, vectors and matrices from section 4.1.2 Booleans, 4.1.3 Integers section, 4.1.4 Floats section, 4.1.5 Vectors and section 4.1.6 Matrices of GLSL 1.30.8 specification
glm::core::type::precision< Namespace for precision stuff
glm::gtcG-Truc Creation stable extensions
glm::gtc::half_float< GLM_GTC_half_float extension: Add support for half precision floating-point types
glm::gtc::matrix_access< GLM_GTC_matrix_access extension: Set a column or a row of a matrix
glm::gtc::matrix_integer< GLM_GTC_matrix_integer extension: Add integer matrices
glm::gtc::matrix_inverse< GLM_GTC_matrix_inverse extension: Inverse matrix functions
glm::gtc::matrix_transform< GLM_GTC_matrix_transform extension: Add transformation matrices
glm::gtc::quaternion< GLM_GTC_quaternion extension: Quaternion types and functions
glm::gtc::swizzle< GLM_GTC_swizzle extension
glm::gtc::type_precision< GLM_GTC_type_precision extension: Defined types with specific size
glm::gtc::type_ptr< GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address
glm::gtxG-Truc Creation experimental extensions
glm::gtx::associated_min_max< GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces
glm::gtx::bit< GLM_GTX_bit extension: Allow to perform bit operations on integer values
glm::gtx::closest_point< GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point
glm::gtx::color_cast< GLM_GTX_color_cast extension: Conversion between two color types
glm::gtx::color_space< GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations
glm::gtx::color_space_YCoCg< GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations
glm::gtx::compatibility< GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages
glm::gtx::component_wise< GLM_GTX_component_wise extension: Operations between components of a type
glm::gtx::epsilon< GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values
glm::gtx::euler_angles< GLM_GTX_euler_angles extension: Build matrices from Euler angles
glm::gtx::extend< GLM_GTX_extend extension: Extend a position from a source to a position at a defined length
glm::gtx::extented_min_max< GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters
glm::gtx::fast_exponential< GLM_GTX_fast_exponential extension: Fast but less accurate implementations of exponential based functions
glm::gtx::fast_square_root< GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions
glm::gtx::fast_trigonometry< GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions
glm::gtx::gradient_paint< GLM_GTX_gradient_paint extension: Compute a radient gradient according section OpenVG 1.1 specifications, 9.3.2 Radial Gradients
glm::gtx::handed_coordinate_space< GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system
glm::gtx::inertia< GLM_GTX_inertia extension: Create inertia matrices
glm::gtx::int_10_10_10_2< GLM_GTX_int_10_10_10_2 extension: Add support for integer for core functions
glm::gtx::integer< GLM_GTX_integer extension: Add support for integer for core functions
glm::gtx::intersect< GLM_GTX_intersect extension: Add intersection functions
glm::gtx::log_base< GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar
glm::gtx::matrix_cross_product< GLM_GTX_matrix_cross_product: Build cross product matrices
glm::gtx::matrix_interpolation< GLM_GTX_matrix_interpolation extension: Add transformation matrices
glm::gtx::matrix_major_storage< GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column
glm::gtx::matrix_operation< GLM_GTX_matrix_operation: Build diagonal matrices
glm::gtx::matrix_query< GLM_GTX_matrix_query: Query to evaluate matrix properties
glm::gtx::mixed_product< GLM_GTX_mixed_product extension: Mixed product of 3 vectors
glm::gtx::multiple< GLM_GTX_multiple: Find the closest number of a number multiple of other number
glm::gtx::noise< GLM_GTX_noise extension: Comparison functions for a user defined epsilon values
glm::gtx::norm< GLM_GTX_norm extension: Various way to compute vector norms
glm::gtx::normal< GLM_GTX_normal extension: Compute the normal of a triangle
glm::gtx::normalize_dot< GLM_GTX_normalize_dot extension: Dot product of vectors that need to be normalize with a single square root
glm::gtx::number_precision< GLM_GTX_number_precision extension: Defined size types
glm::gtx::ocl_type< GLM_GTX_ocl_type extension: OpenCL types
glm::gtx::optimum_pow< GLM_GTX_optimum_pow extension: Integer exponentiation of power functions
glm::gtx::orthonormalize< GLM_GTX_orthonormalize extension: Orthonormalize matrices
glm::gtx::perpendicular< GLM_GTX_perpendicular extension: Perpendicular of a vector from other one
glm::gtx::polar_coordinates< GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert
glm::gtx::projection< GLM_GTX_projection extension: Projection of a vector to other one
glm::gtx::quaternion< GLM_GTX_quaternion extension: Quaternion types and functions
glm::gtx::random< GLM_GTX_random extension: Generate random number from various distribution methods
glm::gtx::raw_data< GLM_GTX_raw_data extension: Projection of a vector to other one
glm::gtx::reciprocal< GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions
glm::gtx::rotate_vector< GLM_GTX_rotate_vector extension: Function to directly rotate a vector
glm::gtx::simd_mat4< GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type
glm::gtx::simd_vec4< GLM_GTX_simd_vec4 extension: SIMD implementation of vec4 type
glm::gtx::spline< GLM_GTX_simplex extension: Spline functions
glm::gtx::std_based_type< GLM_GTX_std_based_type extension: Add support vector types based on C++ standard type
glm::gtx::string_cast< GLM_GTX_string_cast extension: Setup strings for GLM type values
glm::gtx::transform< GLM_GTX_transform extension: Add transformation matrices
glm::gtx::transform2< GLM_GTX_transform2 extension: Add extra transformation matrices
glm::gtx::ulp< GLM_GTX_ulp extension: Precision calculation functions
glm::gtx::unsigned_int< GLM_GTX_unsigned_int extension: Add support for unsigned integer for core functions
glm::gtx::vector1::precision< GLM_GTX_vec1 extension: 1 component vector
glm::gtx::vector_access< GLM_GTX_vector_access extension: Function to set values to vectors
glm::gtx::vector_angle< GLM_GTX_vector_angle extension: Compute angle between vectors
glm::gtx::vector_query< GLM_GTX_vector_query extension: Query informations of vector types
glm::gtx::verbose_operator< GLM_GTX_verbose_operator extension: Use words to replace operators
glm::gtx::wrap< GLM_GTX_wrap: Wrapping mode using my texture samping
glm::virtrevVIRTREV extensions
glm::virtrev_glmext::xstreamGLM_VIRTREV_xstream extension: Streaming vector and matrix in a xml way
-
- - - diff --git a/doc/api-0.9.2/a00004.html b/doc/api-0.9.3/a00001.html similarity index 78% rename from doc/api-0.9.2/a00004.html rename to doc/api-0.9.3/a00001.html index 27cadac8..6a646009 100644 --- a/doc/api-0.9.2/a00004.html +++ b/doc/api-0.9.3/a00001.html @@ -7,13 +7,13 @@ - +
-
Differences between GLSL and GLM core
+

Differences between GLSL and GLM core

GLM comes very close to replicating GLSL, but it is not exact. Here is a list of differences between GLM and GLSL:

  • Precision qualifiers. In GLSL numeric types can have qualifiers that define the precision of that type. While OpenGL's GLSL ignores these qualifiers, OpenGL ES's version of GLSL uses them.

    -

    C++ has no language equivalent to precision qualifiers. Instead, GLM provides a set of typedefs for each kind of precision qualifier and type. These types can be found in their own section.

    +

    C++ has no language equivalent to precision qualifiers. Instead, GLM provides a set of typedefs for each kind of precision qualifier and type. These types can be found in their own section.

    Functions that take types tend to be templated on those types, so they can take these qualified types just as well as the regular ones.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00002.html b/doc/api-0.9.3/a00002.html new file mode 100644 index 00000000..a45cfa8e --- /dev/null +++ b/doc/api-0.9.3/a00002.html @@ -0,0 +1,71 @@ + + + + +_swizzle_base0< T, N > Struct Template Reference + + + + + +
+
+ + + + + + +
+
+ + + +
+
+
+

_swizzle_base0< T, N > Struct Template Reference

+
+
+ +

Internal class for implementing swizzle operators. +More...

+ +

Inherited by _swizzle_base1< ValueType, VecType, E0, E1, E2, E3, N >, and _swizzle_base1< T, V, E0, E1, E2, E3, N >.

+ +

List of all members.

+ +
+

Detailed Description

+

template<typename T, int N>
+ struct glm::detail::_swizzle_base0< T, N >

+ +

Internal class for implementing swizzle operators.

+ +

Definition at line 58 of file _swizzle.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00003.html b/doc/api-0.9.3/a00003.html new file mode 100644 index 00000000..1fd67a0d --- /dev/null +++ b/doc/api-0.9.3/a00003.html @@ -0,0 +1,74 @@ + + + + +_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, DUPLICATE_ELEMENTS > Struct Template Reference + + + + + +
+
+ + + + + + +
+
+ + + +
+
+
+

_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, DUPLICATE_ELEMENTS > Struct Template Reference

+
+
+ +

Internal class for implementing swizzle operators. +More...

+ +

Inherits glm::detail::_swizzle_base1< ValueType, VecType, E0, E1, E2, E3, N >.

+ +

List of all members.

+ +
+

Detailed Description

+

template<typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS>
+ struct glm::detail::_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, DUPLICATE_ELEMENTS >

+ +

Internal class for implementing swizzle operators.

+

Template parameters:

+

ValueType = type of scalar values (e.g. float, double) VecType = class the swizzle is applies to (e.g. tvec3<float>) N = number of components in the vector (e.g. 3) E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec

+

DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles containing duplicate elements so that they cannot be used as r-values).

+ +

Definition at line 108 of file _swizzle.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00004.html b/doc/api-0.9.3/a00004.html new file mode 100644 index 00000000..0f41aff8 --- /dev/null +++ b/doc/api-0.9.3/a00004.html @@ -0,0 +1,71 @@ + + + + +_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 > Struct Template Reference + + + + + + +
+
+

_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 > Struct Template Reference

+
+
+ +

Specialization for swizzles containing duplicate elements. These cannot be modified. +More...

+ +

Inherits glm::detail::_swizzle_base1< ValueType, VecType, E0, E1, E2, E3, N >.

+ +

List of all members.

+ +
+

Detailed Description

+

template<typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3>
+ struct glm::detail::_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 >

+ +

Specialization for swizzles containing duplicate elements. These cannot be modified.

+ +

Definition at line 188 of file _swizzle.hpp.

+
+ + + diff --git a/doc/api-0.9.2/a00009.html b/doc/api-0.9.3/a00005.html similarity index 65% rename from doc/api-0.9.2/a00009.html rename to doc/api-0.9.3/a00005.html index 27e11739..0efd2469 100644 --- a/doc/api-0.9.2/a00009.html +++ b/doc/api-0.9.3/a00005.html @@ -7,13 +7,13 @@ - +

16-bit floating point type. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

16-bit floating point type.

-

Definition at line 25 of file type_half.hpp.

+

Definition at line 44 of file type_half.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00010.html b/doc/api-0.9.3/a00006.html similarity index 67% rename from doc/api-0.9.2/a00010.html rename to doc/api-0.9.3/a00006.html index c7149d4c..8317e8b4 100644 --- a/doc/api-0.9.2/a00010.html +++ b/doc/api-0.9.3/a00006.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat2x2< T > Struct Template Reference
+

tmat2x2< T > Struct Template Reference

Template for 2 * 2 matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat2x2< T >

+ struct glm::detail::tmat2x2< T >

Template for 2 * 2 matrix of floating-point numbers.

-

Definition at line 35 of file type_mat2x2.hpp.

+

Definition at line 54 of file type_mat2x2.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00011.html b/doc/api-0.9.3/a00007.html similarity index 67% rename from doc/api-0.9.2/a00011.html rename to doc/api-0.9.3/a00007.html index d58d16e7..e2aa7fa0 100644 --- a/doc/api-0.9.2/a00011.html +++ b/doc/api-0.9.3/a00007.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat2x3< T > Struct Template Reference
+

tmat2x3< T > Struct Template Reference

Template for 2 columns and 3 rows matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat2x3< T >

+ struct glm::detail::tmat2x3< T >

Template for 2 columns and 3 rows matrix of floating-point numbers.

-

Definition at line 35 of file type_mat2x3.hpp.

+

Definition at line 54 of file type_mat2x3.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00012.html b/doc/api-0.9.3/a00008.html similarity index 67% rename from doc/api-0.9.2/a00012.html rename to doc/api-0.9.3/a00008.html index 388dff26..dff7c24a 100644 --- a/doc/api-0.9.2/a00012.html +++ b/doc/api-0.9.3/a00008.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat2x4< T > Struct Template Reference
+

tmat2x4< T > Struct Template Reference

Template for 2 columns and 4 rows matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat2x4< T >

+ struct glm::detail::tmat2x4< T >

Template for 2 columns and 4 rows matrix of floating-point numbers.

-

Definition at line 35 of file type_mat2x4.hpp.

+

Definition at line 54 of file type_mat2x4.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00013.html b/doc/api-0.9.3/a00009.html similarity index 67% rename from doc/api-0.9.2/a00013.html rename to doc/api-0.9.3/a00009.html index 6c8c12c2..00da613e 100644 --- a/doc/api-0.9.2/a00013.html +++ b/doc/api-0.9.3/a00009.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat3x2< T > Struct Template Reference
+

tmat3x2< T > Struct Template Reference

Template for 3 columns and 2 rows matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat3x2< T >

+ struct glm::detail::tmat3x2< T >

Template for 3 columns and 2 rows matrix of floating-point numbers.

-

Definition at line 35 of file type_mat3x2.hpp.

+

Definition at line 54 of file type_mat3x2.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00014.html b/doc/api-0.9.3/a00010.html similarity index 67% rename from doc/api-0.9.2/a00014.html rename to doc/api-0.9.3/a00010.html index f0dcc202..12603683 100644 --- a/doc/api-0.9.2/a00014.html +++ b/doc/api-0.9.3/a00010.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat3x3< T > Struct Template Reference
+

tmat3x3< T > Struct Template Reference

Template for 3 * 3 matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat3x3< T >

+ struct glm::detail::tmat3x3< T >

Template for 3 * 3 matrix of floating-point numbers.

-

Definition at line 35 of file type_mat3x3.hpp.

+

Definition at line 54 of file type_mat3x3.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00015.html b/doc/api-0.9.3/a00011.html similarity index 67% rename from doc/api-0.9.2/a00015.html rename to doc/api-0.9.3/a00011.html index 71f76ce6..3a9f56aa 100644 --- a/doc/api-0.9.2/a00015.html +++ b/doc/api-0.9.3/a00011.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat3x4< T > Struct Template Reference
+

tmat3x4< T > Struct Template Reference

Template for 3 columns and 4 rows matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat3x4< T >

+ struct glm::detail::tmat3x4< T >

Template for 3 columns and 4 rows matrix of floating-point numbers.

-

Definition at line 35 of file type_mat3x4.hpp.

+

Definition at line 54 of file type_mat3x4.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00016.html b/doc/api-0.9.3/a00012.html similarity index 67% rename from doc/api-0.9.2/a00016.html rename to doc/api-0.9.3/a00012.html index 6cf024e1..13460a8d 100644 --- a/doc/api-0.9.2/a00016.html +++ b/doc/api-0.9.3/a00012.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat4x2< T > Struct Template Reference
+

tmat4x2< T > Struct Template Reference

Template for 4 columns and 2 rows matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat4x2< T >

+ struct glm::detail::tmat4x2< T >

Template for 4 columns and 2 rows matrix of floating-point numbers.

-

Definition at line 35 of file type_mat4x2.hpp.

+

Definition at line 54 of file type_mat4x2.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00017.html b/doc/api-0.9.3/a00013.html similarity index 67% rename from doc/api-0.9.2/a00017.html rename to doc/api-0.9.3/a00013.html index bc1a2127..fcff1c77 100644 --- a/doc/api-0.9.2/a00017.html +++ b/doc/api-0.9.3/a00013.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat4x3< T > Struct Template Reference
+

tmat4x3< T > Struct Template Reference

Template for 4 columns and 3 rows matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat4x3< T >

+ struct glm::detail::tmat4x3< T >

Template for 4 columns and 3 rows matrix of floating-point numbers.

-

Definition at line 35 of file type_mat4x3.hpp.

+

Definition at line 54 of file type_mat4x3.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00018.html b/doc/api-0.9.3/a00014.html similarity index 67% rename from doc/api-0.9.2/a00018.html rename to doc/api-0.9.3/a00014.html index 6dcb6755..3649289d 100644 --- a/doc/api-0.9.2/a00018.html +++ b/doc/api-0.9.3/a00014.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat4x4< T > Struct Template Reference
+

tmat4x4< T > Struct Template Reference

Template for 4 * 4 matrix of floating-point numbers. - More...

+More...

-

List of all members.

+

List of all members.

-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tmat4x4< T >

+ struct glm::detail::tmat4x4< T >

Template for 4 * 4 matrix of floating-point numbers.

-

Definition at line 35 of file type_mat4x4.hpp.

+

Definition at line 54 of file type_mat4x4.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00019.html b/doc/api-0.9.3/a00015.html similarity index 68% rename from doc/api-0.9.2/a00019.html rename to doc/api-0.9.3/a00015.html index 8aedbf4a..feb3e8b0 100644 --- a/doc/api-0.9.2/a00019.html +++ b/doc/api-0.9.3/a00015.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ @@ -45,31 +46,31 @@
-
tquat< T > Struct Template Reference
+

tquat< T > Struct Template Reference

Template for quaternion. - More...

+More...

-

List of all members.

+

List of all members.

Public Member Functions

tquat (tvec3< T > const &eulerAngles)
tquat (tvec3< T > const &eulerAngles)
-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tquat< T >

+ struct glm::detail::tquat< T >

Template for quaternion.

From GLM_GTC_quaternion extension.

-

Definition at line 36 of file gtc/quaternion.hpp.

+

Definition at line 57 of file gtc/quaternion.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00020.html b/doc/api-0.9.3/a00016.html similarity index 74% rename from doc/api-0.9.2/a00020.html rename to doc/api-0.9.3/a00016.html index 45abbde3..194fa920 100644 --- a/doc/api-0.9.2/a00020.html +++ b/doc/api-0.9.3/a00016.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ @@ -45,43 +46,43 @@
-
tvec2< T > Struct Template Reference
+

tvec2< T > Struct Template Reference

The basic 2D vector type. - More...

+More...

-

List of all members.

+

List of all members.

- + - - - - - + - + + + + +

Public Member Functions

template<typename U >
GLM_FUNC_DECL tvec2 (U const &x)
GLM_FUNC_DECL tvec2 (U const &x)
template<typename U >
GLM_FUNC_DECL tvec2 (tvec4< U > const &v)
-template<typename U >
GLM_FUNC_DECL tvec2 (tvec3< U > const &v)
-template<typename U >
GLM_FUNC_DECL tvec2 (tvec2< U > const &v)
GLM_FUNC_DECL tvec2 (tvec4< U > const &v)
template<typename U , typename V >
GLM_FUNC_DECL tvec2 (U const &x, V const &y)
GLM_FUNC_DECL tvec2 (U const &x, V const &y)
+template<typename U >
GLM_FUNC_DECL tvec2 (tvec3< U > const &v)
+template<typename U >
GLM_FUNC_DECL tvec2 (tvec2< U > const &v)
-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tvec2< T >

+ struct glm::detail::tvec2< T >

The basic 2D vector type.

-

Definition at line 31 of file type_vec2.hpp.

+

Definition at line 50 of file type_vec2.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00021.html b/doc/api-0.9.3/a00017.html similarity index 75% rename from doc/api-0.9.2/a00021.html rename to doc/api-0.9.3/a00017.html index 3021ad59..5aa9dd75 100644 --- a/doc/api-0.9.2/a00021.html +++ b/doc/api-0.9.3/a00017.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ @@ -45,46 +46,46 @@
-
tvec3< T > Struct Template Reference
+

tvec3< T > Struct Template Reference

Basic 3D vector type. - More...

+More...

-

List of all members.

+

List of all members.

- - - - - - - + - + + + + + + + - +

Public Member Functions

-template<typename U >
GLM_FUNC_DECL tvec3 (tvec3< U > const &v)
-template<typename U >
GLM_FUNC_DECL tvec3 (tvec4< U > const &v)
template<typename A , typename B >
GLM_FUNC_DECL tvec3 (A const &s, tvec2< B > const &v)
-template<typename A , typename B >
GLM_FUNC_DECL tvec3 (tvec2< A > const &v, B const &s)
GLM_FUNC_DECL tvec3 (A const &s, tvec2< B > const &v)
template<typename U , typename V , typename W >
GLM_FUNC_DECL tvec3 (U const &x, V const &y, W const &z)
GLM_FUNC_DECL tvec3 (U const &x, V const &y, W const &z)
+template<typename U >
GLM_FUNC_DECL tvec3 (tvec4< U > const &v)
+template<typename A , typename B >
GLM_FUNC_DECL tvec3 (tvec2< A > const &v, B const &s)
+template<typename U >
GLM_FUNC_DECL tvec3 (tvec3< U > const &v)
template<typename U >
GLM_FUNC_DECL tvec3 (U const &x)
GLM_FUNC_DECL tvec3 (U const &x)
-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tvec3< T >

+ struct glm::detail::tvec3< T >

Basic 3D vector type.

-

Definition at line 31 of file type_vec3.hpp.

+

Definition at line 50 of file type_vec3.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00022.html b/doc/api-0.9.3/a00018.html similarity index 80% rename from doc/api-0.9.2/a00022.html rename to doc/api-0.9.3/a00018.html index 46aa9c96..71cfa96e 100644 --- a/doc/api-0.9.2/a00022.html +++ b/doc/api-0.9.3/a00018.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ @@ -45,79 +46,79 @@
-
tvec4< T > Struct Template Reference
+

tvec4< T > Struct Template Reference

Basic 4D vector type. - More...

+More...

-

List of all members.

+

List of all members.

- - - - - - - - - - - - - - - + - - + - - - - - - - - - + - - + - + - + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

-template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (A const &s1, tref2< B > const &v, C const &s2)
template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tref3< A > const &v, B const &s)
-template<typename U >
GLM_FUNC_DECL tvec4 (U const &x)
-template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tref2< A > const &v1, tref2< B > const &v2)
-template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tref2< A > const &v1, tvec2< B > const &v2)
-template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (tvec2< A > const &v, B const &s1, C const &s2)
-template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (A const &s1, B const &s2, tref2< C > const &v)
-template<typename A , typename B , typename C , typename D >
GLM_FUNC_DECL tvec4 (A const &x, B const &y, C const &z, D const &w)
GLM_FUNC_DECL tvec4 (tref3< A > const &v, B const &s)
template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (A const &s1, tvec2< B > const &v, C const &s2)
+
GLM_FUNC_DECL tvec4 (A const &s1, tvec2< B > const &v, C const &s2)
template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (A const &s1, B const &s2, tvec2< C > const &v)
-template<typename U >
GLM_FUNC_DECL tvec4 (tvec4< U > const &v)
-template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tvec2< A > const &v1, tvec2< B > const &v2)
-template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tvec3< A > const &v, B const &s)
-template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (tref2< A > const &v, B const &s1, C const &s2)
GLM_FUNC_DECL tvec4 (tvec2< A > const &v, B const &s1, C const &s2)
template<typename A , typename B >
GLM_FUNC_DECL tvec4 (A const &s, tvec3< B > const &v)
+
GLM_FUNC_DECL tvec4 (A const &s, tvec3< B > const &v)
template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tvec2< A > const &v1, tref2< B > const &v2)
GLM_FUNC_DECL tvec4 (tvec3< A > const &v, B const &s)
template<typename A , typename B >
GLM_FUNC_DECL tvec4 (A const &s, tref3< B > const &v)
GLM_FUNC_DECL tvec4 (A const &s, tref3< B > const &v)
+template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (A const &s1, B const &s2, tvec2< C > const &v)
+template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (A const &s1, tref2< B > const &v, C const &s2)
+template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tref2< A > const &v1, tref2< B > const &v2)
+template<typename U >
GLM_FUNC_DECL tvec4 (tvec4< U > const &v)
+template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (A const &s1, B const &s2, tref2< C > const &v)
+template<typename A , typename B , typename C >
GLM_FUNC_DECL tvec4 (tref2< A > const &v, B const &s1, C const &s2)
+template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tvec2< A > const &v1, tref2< B > const &v2)
+template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tref2< A > const &v1, tvec2< B > const &v2)
+template<typename A , typename B , typename C , typename D >
GLM_FUNC_DECL tvec4 (A const &x, B const &y, C const &z, D const &w)
+template<typename U >
GLM_FUNC_DECL tvec4 (U const &x)
+template<typename A , typename B >
GLM_FUNC_DECL tvec4 (tvec2< A > const &v1, tvec2< B > const &v2)
-

Detailed Description

+

Detailed Description

template<typename T>
-struct glm::detail::tvec4< T >

+ struct glm::detail::tvec4< T >

Basic 4D vector type.

-

Definition at line 31 of file type_vec4.hpp.

+

Definition at line 50 of file type_vec4.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00019.html b/doc/api-0.9.3/a00019.html new file mode 100644 index 00000000..d66d8ede --- /dev/null +++ b/doc/api-0.9.3/a00019.html @@ -0,0 +1,89 @@ + + + + +_detail.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

_detail.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + +

+Typedefs

+typedef detail::thalf float16
+typedef float float32
+typedef double float64
+typedef signed short int16
+typedef signed int int32
+typedef detail::sint64 int64
+typedef signed char int8
+typedef unsigned short uint16
+typedef unsigned int uint32
+typedef unsigned long long uint64
+typedef unsigned char uint8
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-07-24 / 2011-06-14
+
Author:
Christophe Riccio
+ +

Definition in file _detail.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00019_source.html b/doc/api-0.9.3/a00019_source.html new file mode 100644 index 00000000..32f5e83f --- /dev/null +++ b/doc/api-0.9.3/a00019_source.html @@ -0,0 +1,500 @@ + + + + +_detail.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

_detail.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_detail
+00030 #define glm_core_detail
+00031 
+00032 #include "setup.hpp"
+00033 #include <cassert>
+00034 #if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
+00035 #include <cstdint>
+00036 #endif
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041         class thalf;
+00042 
+00043 #if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available
+00044         typedef int64_t                                                         sint64;
+00045         typedef uint64_t                                                        uint64;
+00046 #elif(GLM_COMPILER & GLM_COMPILER_VC)
+00047         typedef signed __int64                                          sint64;
+00048         typedef unsigned __int64                                        uint64;
+00049 #elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC | GLM_COMPILER_CLANG))
+00050         __extension__ typedef signed long long          sint64;
+00051         __extension__ typedef unsigned long long        uint64;
+00052 #elif(GLM_COMPILER & GLM_COMPILER_BC)
+00053         typedef Int64                                                           sint64;
+00054         typedef Uint64                                                          uint64;
+00055 #else//unknown compiler
+00056         typedef signed long     long                                    sint64;
+00057         typedef unsigned long long                                      uint64;
+00058 #endif//GLM_COMPILER
+00059 
+00060         template<bool C>
+00061         struct If
+00062         {
+00063                 template<typename F, typename T>
+00064                 static GLM_FUNC_QUALIFIER T apply(F functor, const T& val)
+00065                 {
+00066                         return functor(val);
+00067                 }
+00068         };
+00069 
+00070         template<>
+00071         struct If<false>
+00072         {
+00073                 template<typename F, typename T>
+00074                 static GLM_FUNC_QUALIFIER T apply(F, const T& val)
+00075                 {
+00076                         return val;
+00077                 }
+00078         };
+00079 
+00080         //template <typename T>
+00081         //struct traits
+00082         //{
+00083         //      static const bool is_signed = false;
+00084         //      static const bool is_float = false;
+00085         //      static const bool is_vector = false;
+00086         //      static const bool is_matrix = false;
+00087         //      static const bool is_genType = false;
+00088         //      static const bool is_genIType = false;
+00089         //      static const bool is_genUType = false;
+00090         //};
+00091 
+00092         //template <>
+00093         //struct traits<half>
+00094         //{
+00095         //      static const bool is_float = true;
+00096         //      static const bool is_genType = true;
+00097         //};
+00098 
+00099         //template <>
+00100         //struct traits<float>
+00101         //{
+00102         //      static const bool is_float = true;
+00103         //      static const bool is_genType = true;
+00104         //};
+00105 
+00106         //template <>
+00107         //struct traits<double>
+00108         //{
+00109         //      static const bool is_float = true;
+00110         //      static const bool is_genType = true;
+00111         //};
+00112 
+00113         //template <typename genType>
+00114         //struct desc
+00115         //{
+00116         //      typedef genType                                                 type;
+00117         //      typedef genType *                                               pointer;
+00118         //      typedef genType const*                                  const_pointer;
+00119         //      typedef genType const *const                    const_pointer_const;
+00120         //      typedef genType *const                                  pointer_const;
+00121         //      typedef genType &                                               reference;
+00122         //      typedef genType const&                                  const_reference;
+00123         //      typedef genType const&                                  param_type;
+00124 
+00125         //      typedef typename genType::value_type    value_type;
+00126         //      typedef typename genType::size_type             size_type;
+00127         //      static const typename size_type                 value_size;
+00128         //};
+00129 
+00130         //template <typename genType>
+00131         //const typename desc<genType>::size_type desc<genType>::value_size = genType::value_size();
+00132 
+00133         union uif32
+00134         {
+00135                 GLM_FUNC_QUALIFIER uif32() :
+00136                         i(0)
+00137                 {}
+00138 
+00139                 GLM_FUNC_QUALIFIER uif32(float f) :
+00140                         f(f)
+00141                 {}
+00142 
+00143                 GLM_FUNC_QUALIFIER uif32(unsigned int i) :
+00144                         i(i)
+00145                 {}
+00146 
+00147                 float f;
+00148                 unsigned int i;
+00149         };
+00150 
+00151         union uif64
+00152         {
+00153                 GLM_FUNC_QUALIFIER uif64() :
+00154                         i(0)
+00155                 {}
+00156 
+00157                 GLM_FUNC_QUALIFIER uif64(double f) :
+00158                         f(f)
+00159                 {}
+00160 
+00161                 GLM_FUNC_QUALIFIER uif64(uint64 i) :
+00162                         i(i)
+00163                 {}
+00164 
+00165                 double f;
+00166                 uint64 i;
+00167         };
+00168 
+00169         typedef uif32 uif;
+00170 
+00172         // int
+00173 
+00174         template <typename T>
+00175         struct is_int
+00176         {
+00177                 enum is_int_enum
+00178                 {
+00179                         _YES = 0,
+00180                         _NO = 1
+00181                 };
+00182         };
+00183 
+00184 #define GLM_DETAIL_IS_INT(T)    \
+00185         template <>                                     \
+00186         struct is_int<T>                        \
+00187         {                                                       \
+00188                 enum is_int_enum                \
+00189                 {                                               \
+00190                         _YES = 1,                       \
+00191                         _NO = 0                         \
+00192                 };                                              \
+00193         }
+00194 
+00196         // uint
+00197 
+00198         template <typename T>
+00199         struct is_uint
+00200         {
+00201                 enum is_uint_enum
+00202                 {
+00203                         _YES = 0,
+00204                         _NO = 1
+00205                 };
+00206         };
+00207 
+00208 #define GLM_DETAIL_IS_UINT(T)   \
+00209         template <>                                     \
+00210         struct is_uint<T>                       \
+00211         {                                                       \
+00212                 enum is_uint_enum               \
+00213                 {                                               \
+00214                         _YES = 1,                       \
+00215                         _NO = 0                         \
+00216                 };                                              \
+00217         }
+00218 
+00219         //GLM_DETAIL_IS_UINT(unsigned long long)
+00220 
+00222         // float
+00223 
+00224         template <typename T>
+00225         struct is_float
+00226         {
+00227                 enum is_float_enum
+00228                 {
+00229                         _YES = 0,
+00230                         _NO = 1
+00231                 };
+00232         };
+00233 
+00234 #define GLM_DETAIL_IS_FLOAT(T)  \
+00235         template <>                                     \
+00236         struct is_float<T>                      \
+00237         {                                                       \
+00238                 enum is_float_enum              \
+00239                 {                                               \
+00240                         _YES = 1,                       \
+00241                         _NO = 0                         \
+00242                 };                                              \
+00243         }
+00244 
+00246         // bool
+00247 
+00248         template <typename T>
+00249         struct is_bool
+00250         {
+00251                 enum is_bool_enum
+00252                 {
+00253                         _YES = 0,
+00254                         _NO = 1
+00255                 };
+00256         };
+00257         
+00258         template <>
+00259         struct is_bool<bool>
+00260         {
+00261                 enum is_bool_enum
+00262                 {
+00263                         _YES = 1,
+00264                         _NO = 0
+00265                 };
+00266         };
+00267         
+00269         // vector
+00270 
+00271         template <typename T>
+00272         struct is_vector
+00273         {
+00274                 enum is_vector_enum
+00275                 {
+00276                         _YES = 0,
+00277                         _NO = 1
+00278                 };
+00279         };
+00280 
+00281 #       define GLM_DETAIL_IS_VECTOR(TYPE) \
+00282                 template <typename T> \
+00283                 struct is_vector<TYPE<T> > \
+00284                 { \
+00285                         enum is_vector_enum \
+00286                         { \
+00287                                 _YES = 1, \
+00288                                 _NO = 0 \
+00289                         }; \
+00290                 }
+00291 
+00293         // matrix
+00294 
+00295         template <typename T>
+00296         struct is_matrix
+00297         {
+00298                 enum is_matrix_enum
+00299                 {
+00300                         _YES = 0,
+00301                         _NO = 1
+00302                 };
+00303         };
+00304 
+00305 #define GLM_DETAIL_IS_MATRIX(T) \
+00306         template <>                                     \
+00307         struct is_matrix                        \
+00308         {                                                       \
+00309                 enum is_matrix_enum             \
+00310                 {                                               \
+00311                         _YES = 1,                       \
+00312                         _NO = 0                         \
+00313                 };                                              \
+00314         }
+00315 
+00317         // type
+00318 
+00319         template <typename T>
+00320         struct type
+00321         {
+00322                 enum type_enum
+00323                 {
+00324                         is_float = is_float<T>::_YES,
+00325                         is_int = is_int<T>::_YES,
+00326                         is_uint = is_uint<T>::_YES,
+00327                         is_bool = is_bool<T>::_YES
+00328                 };
+00329         };
+00330         
+00332         // type
+00333         
+00334         typedef signed char                                                     int8;
+00335         typedef signed short                                            int16;
+00336         typedef signed int                                                      int32;
+00337         typedef detail::sint64                                          int64;
+00338         
+00339         typedef unsigned char                                           uint8;
+00340         typedef unsigned short                                          uint16;
+00341         typedef unsigned int                                            uint32;
+00342         typedef detail::uint64                                          uint64;
+00343         
+00344         typedef detail::thalf                                           float16;
+00345         typedef float                                                           float32;
+00346         typedef double                                                          float64;
+00347         
+00349         // float_or_int_trait 
+00350 
+00351         struct float_or_int_value
+00352         {
+00353                 enum
+00354                 {
+00355                         ERROR,
+00356                         FLOAT,
+00357                         INT
+00358                 };
+00359         };
+00360 
+00361         template <typename T>
+00362         struct float_or_int_trait
+00363         {
+00364                 enum{ID = float_or_int_value::ERROR};
+00365         };
+00366 
+00367         template <>
+00368         struct float_or_int_trait<int8>
+00369         {
+00370                 enum{ID = float_or_int_value::INT};
+00371         };
+00372 
+00373         template <>
+00374         struct float_or_int_trait<int16>
+00375         {
+00376                 enum{ID = float_or_int_value::INT};
+00377         };
+00378 
+00379         template <>
+00380         struct float_or_int_trait<int32>
+00381         {
+00382                 enum{ID = float_or_int_value::INT};
+00383         };
+00384 
+00385         template <>
+00386         struct float_or_int_trait<int64>
+00387         {
+00388                 enum{ID = float_or_int_value::INT};
+00389         };
+00390 
+00391         template <>
+00392         struct float_or_int_trait<uint8>
+00393         {
+00394                 enum{ID = float_or_int_value::INT};
+00395         };
+00396 
+00397         template <>
+00398         struct float_or_int_trait<uint16>
+00399         {
+00400                 enum{ID = float_or_int_value::INT};
+00401         };
+00402 
+00403         template <>
+00404         struct float_or_int_trait<uint32>
+00405         {
+00406                 enum{ID = float_or_int_value::INT};
+00407         };
+00408 
+00409         template <>
+00410         struct float_or_int_trait<uint64>
+00411         {
+00412                 enum{ID = float_or_int_value::INT};
+00413         };
+00414 
+00415         template <>
+00416         struct float_or_int_trait<float16>
+00417         {
+00418                 enum{ID = float_or_int_value::FLOAT};
+00419         };
+00420 
+00421         template <>
+00422         struct float_or_int_trait<float32>
+00423         {
+00424                 enum{ID = float_or_int_value::FLOAT};
+00425         };
+00426 
+00427         template <>
+00428         struct float_or_int_trait<float64>
+00429         {
+00430                 enum{ID = float_or_int_value::FLOAT};
+00431         };
+00432 
+00433 }//namespace detail
+00434 }//namespace glm
+00435 
+00436 #if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005))
+00437 #       define GLM_DEPRECATED __declspec(deprecated)
+00438 #       define GLM_ALIGN(x) __declspec(align(x)) 
+00439 #       define GLM_ALIGNED_STRUCT(x) __declspec(align(x)) struct 
+00440 #       define GLM_RESTRICT __declspec(restrict)
+00441 #       define GLM_RESTRICT_VAR __restrict
+00442 #elif((GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC)) && (GLM_COMPILER >= GLM_COMPILER_GCC31))
+00443 #       define GLM_DEPRECATED __attribute__((__deprecated__))
+00444 #       define GLM_ALIGN(x) __attribute__((aligned(x)))
+00445 #       define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x)))
+00446 #       if(GLM_COMPILER >= GLM_COMPILER_GCC33)
+00447 #               define GLM_RESTRICT __restrict__
+00448 #               define GLM_RESTRICT_VAR __restrict__
+00449 #       else
+00450 #               define GLM_RESTRICT
+00451 #               define GLM_RESTRICT_VAR
+00452 #       endif
+00453 #       define GLM_RESTRICT __restrict__
+00454 #       define GLM_RESTRICT_VAR __restrict__
+00455 #else
+00456 #       define GLM_DEPRECATED
+00457 #       define GLM_ALIGN
+00458 #       define GLM_ALIGNED_STRUCT(x) 
+00459 #       define GLM_RESTRICT
+00460 #       define GLM_RESTRICT_VAR
+00461 #endif//GLM_COMPILER
+00462 
+00463 #endif//glm_core_detail
+
+
+ + + diff --git a/doc/api-0.9.3/a00020.html b/doc/api-0.9.3/a00020.html new file mode 100644 index 00000000..d2545b1f --- /dev/null +++ b/doc/api-0.9.3/a00020.html @@ -0,0 +1,63 @@ + + + + +_fixes.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

_fixes.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2011-02-21 / 2011-02-16
+
Author:
Christophe Riccio
+ +

Definition in file _fixes.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00020_source.html b/doc/api-0.9.3/a00020_source.html new file mode 100644 index 00000000..d6e30319 --- /dev/null +++ b/doc/api-0.9.3/a00020_source.html @@ -0,0 +1,90 @@ + + + + +_fixes.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

_fixes.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00030 #ifdef max
+00031 #undef max
+00032 #endif
+00033 
+00035 #ifdef min
+00036 #undef min
+00037 #endif
+00038 
+00040 #ifdef isnan
+00041 #undef isnan
+00042 #endif
+00043 
+00045 #ifdef isinf
+00046 #undef isinf
+00047 #endif
+00048 
+
+
+ + + diff --git a/doc/api-0.9.3/a00021.html b/doc/api-0.9.3/a00021.html new file mode 100644 index 00000000..d294ec15 --- /dev/null +++ b/doc/api-0.9.3/a00021.html @@ -0,0 +1,73 @@ + + + + +_swizzle.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

_swizzle.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  _swizzle_base0< T, N >
 Internal class for implementing swizzle operators. More...
struct  _swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, DUPLICATE_ELEMENTS >
 Internal class for implementing swizzle operators. More...
struct  _swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 >
 Specialization for swizzles containing duplicate elements. These cannot be modified. More...
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-04-20 / 2011-02-16
+
Author:
Christophe Riccio
+ +

Definition in file _swizzle.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00021_source.html b/doc/api-0.9.3/a00021_source.html new file mode 100644 index 00000000..fb1bcf67 --- /dev/null +++ b/doc/api-0.9.3/a00021_source.html @@ -0,0 +1,870 @@ + + + + +_swizzle.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

_swizzle.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_swizzle
+00030 #define glm_core_swizzle
+00031 
+00032 #include "_swizzle_func.hpp"
+00033 
+00034 namespace glm
+00035 {
+00036         enum comp
+00037         {
+00038                 X = 0,
+00039                 R = 0,
+00040                 S = 0,
+00041                 Y = 1,
+00042                 G = 1,
+00043                 T = 1,
+00044                 Z = 2,
+00045                 B = 2,
+00046                 P = 2,
+00047                 W = 3,
+00048                 A = 3,
+00049                 Q = 3
+00050         };
+00051 }//namespace glm
+00052 
+00053 namespace glm{
+00054 namespace detail
+00055 {
+00057     template <typename T, int N>
+00058     struct _swizzle_base0
+00059     {
+00060         typedef T       value_type;
+00061 
+00062     protected:
+00063         value_type&         elem   (size_t i)       { return (reinterpret_cast<value_type*>(_buffer))[i]; }
+00064         const value_type&   elem   (size_t i) const { return (reinterpret_cast<const value_type*>(_buffer))[i]; }
+00065 
+00066         // Use an opaque buffer to *ensure* the compiler doesn't call a constructor.
+00067         // The size 1 buffer is assumed to aligned to the actual members so that the
+00068         // elem() 
+00069         char    _buffer[1];
+00070     };
+00071 
+00072     template <typename T, typename V, int E0, int E1, int E2, int E3, int N>
+00073     struct _swizzle_base1 : public _swizzle_base0<T,N>
+00074     {
+00075     };
+00076 
+00077     template <typename T, typename V, int E0, int E1>
+00078     struct _swizzle_base1<T,V,E0,E1,-1,-2,2> : public _swizzle_base0<T,2>
+00079     {
+00080         V operator ()()  const { return V(this->elem(E0), this->elem(E1)); }
+00081     };
+00082 
+00083     template <typename T, typename V, int E0, int E1, int E2>
+00084     struct _swizzle_base1<T,V,E0,E1,E2,-1,3> : public _swizzle_base0<T,3>
+00085     {
+00086         V operator ()()  const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); }
+00087     };
+00088 
+00089     template <typename T, typename V, int E0, int E1, int E2, int E3>
+00090     struct _swizzle_base1<T,V,E0,E1,E2,E3,4> : public _swizzle_base0<T,4>
+00091     { 
+00092         V operator ()()  const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
+00093     };
+00094 
+00096 
+00107     template <typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS>
+00108     struct _swizzle_base2 : public _swizzle_base1<ValueType,VecType,E0,E1,E2,E3,N>
+00109     {
+00110                 typedef VecType vec_type;
+00111                 typedef ValueType value_type;
+00112 
+00113                 _swizzle_base2& operator= (const ValueType& t)
+00114                 {
+00115                         for (int i = 0; i < N; ++i)
+00116                                 (*this)[i] = t;
+00117                         return *this;
+00118                 }
+00119 
+00120                 _swizzle_base2& operator= (const VecType& that)
+00121                 {
+00122                         struct op { 
+00123                                 void operator() (value_type& e, value_type& t) { e = t; } 
+00124                         };
+00125                         _apply_op(that, op());
+00126                         return *this;
+00127                 }
+00128 
+00129                 void operator -= (const VecType& that)
+00130                 {
+00131                         struct op { 
+00132                                 void operator() (value_type& e, value_type& t) { e -= t; } 
+00133                         };
+00134                         _apply_op(that, op());
+00135                 }
+00136 
+00137                 void operator += (const VecType& that)
+00138                 {
+00139                         struct op { 
+00140                                 void operator() (value_type& e, value_type& t) { e += t; } 
+00141                         };
+00142                         _apply_op(that, op());
+00143                 }
+00144 
+00145                 void operator *= (const VecType& that)
+00146                 {
+00147                         struct op { 
+00148                                 void operator() (value_type& e, value_type& t) { e *= t; } 
+00149                         };
+00150                         _apply_op(that, op());
+00151                 }
+00152 
+00153                 void operator /= (const VecType& that)
+00154                 {
+00155                         struct op { 
+00156                                 void operator() (value_type& e, value_type& t) { e /= t; } 
+00157                         };
+00158                         _apply_op(that, op());
+00159                 }
+00160 
+00161                 value_type& operator[]  (size_t i)
+00162                 {
+00163                         static const int offset_dst[4] = { E0, E1, E2, E3 };
+00164                         return this->elem(offset_dst[i]);
+00165                 }
+00166                 value_type  operator[]  (size_t i) const
+00167                 {
+00168                         static const int offset_dst[4] = { E0, E1, E2, E3 };
+00169                         return this->elem(offset_dst[i]);
+00170                 }
+00171         protected:
+00172                 template <typename T>
+00173                 void _apply_op(const VecType& that, T op)
+00174                 {
+00175                         // Make a copy of the data in this == &that.
+00176                         // The copier should optimize out the copy in cases where the function is
+00177                         // properly inlined and the copy is not necessary.
+00178                         ValueType t[N];
+00179                         for (int i = 0; i < N; ++i)
+00180                                 t[i] = that[i];
+00181                         for (int i = 0; i < N; ++i)
+00182                                 op( (*this)[i], t[i] );
+00183                 }
+00184     };
+00185 
+00187         template <typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3>
+00188         struct _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,1> : public _swizzle_base1<ValueType,VecType,E0,E1,E2,E3,N>
+00189         {
+00190                 typedef VecType         vec_type;        
+00191                 typedef ValueType       value_type;
+00192 
+00193                 struct Stub {};
+00194                 _swizzle_base2& operator= (const Stub& that) {}
+00195 
+00196                 value_type  operator[]  (size_t i) const
+00197                 {
+00198                         static const int offset_dst[4] = { E0, E1, E2, E3 };
+00199                         return this->elem(offset_dst[i]);
+00200                 } 
+00201         };
+00202 
+00203         template <int N,typename ValueType, typename VecType, int E0,int E1,int E2,int E3>
+00204         struct swizzle : public _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,(E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)>
+00205         {
+00206                 typedef _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,(E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)> base_type;
+00207 
+00208                 using base_type::operator=;
+00209 
+00210                 operator VecType () const { return (*this)(); }
+00211         };
+00212 
+00213 //
+00214 // To prevent the C++ syntax from getting entirely overwhelming, define some alias macros
+00215 //
+00216 #define _GLM_SWIZZLE_TEMPLATE1   template <int N, typename T, typename V, int E0, int E1, int E2, int E3>
+00217 #define _GLM_SWIZZLE_TEMPLATE2   template <int N, typename T, typename V, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3>
+00218 #define _GLM_SWIZZLE_TYPE1       glm::detail::swizzle<N,T,V,E0,E1,E2,E3>
+00219 #define _GLM_SWIZZLE_TYPE2       glm::detail::swizzle<N,T,V,F0,F1,F2,F3>
+00220 
+00221 //
+00222 // Wrapper for a binary operator (e.g. u.yy + v.zy)
+00223 //
+00224 #define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND)                 \
+00225         _GLM_SWIZZLE_TEMPLATE2                                                          \
+00226         V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b)  \
+00227         {                                                                               \
+00228                 return a() OPERAND b();                                                     \
+00229         }                                                                               \
+00230         _GLM_SWIZZLE_TEMPLATE1                                                          \
+00231         V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b)                   \
+00232         {                                                                               \
+00233                 return a() OPERAND b;                                                       \
+00234         }                                                                               \
+00235         _GLM_SWIZZLE_TEMPLATE1                                                          \
+00236         V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b)                   \
+00237         {                                                                               \
+00238                 return a OPERAND b();                                                       \
+00239         }
+00240 
+00241 //
+00242 // Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)
+00243 //
+00244 #define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND)                 \
+00245         _GLM_SWIZZLE_TEMPLATE1                                                          \
+00246         V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b)                   \
+00247         {                                                                               \
+00248                 return a() OPERAND b;                                                       \
+00249         }                                                                               \
+00250         _GLM_SWIZZLE_TEMPLATE1                                                          \
+00251         V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b)                   \
+00252         {                                                                               \
+00253                 return a OPERAND b();                                                       \
+00254         }
+00255 
+00256 //
+00257 // Macro for wrapping a function taking one argument (e.g. abs())
+00258 //
+00259 #define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION)                          \
+00260         _GLM_SWIZZLE_TEMPLATE1                                                          \
+00261         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a)  \
+00262         {                                                                               \
+00263                 return FUNCTION(a());                                                       \
+00264         }
+00265 
+00266 //
+00267 // Macro for wrapping a function taking two vector arguments (e.g. dot()).
+00268 //
+00269 #define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION)                                                      \
+00270         _GLM_SWIZZLE_TEMPLATE2                                                                                      \
+00271         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
+00272         {                                                                                                           \
+00273                 return FUNCTION(a(), b());                                                                              \
+00274         }                                                                                                           \
+00275         _GLM_SWIZZLE_TEMPLATE1                                                                                      \
+00276         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \
+00277         {                                                                                                           \
+00278                 return FUNCTION(a(), b());                                                                              \
+00279         }                                                                                                           \
+00280         _GLM_SWIZZLE_TEMPLATE1                                                                                      \
+00281         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b)         \
+00282         {                                                                                                           \
+00283                 return FUNCTION(a(), b);                                                                                \
+00284         }                                                                                                           \
+00285         _GLM_SWIZZLE_TEMPLATE1                                                                                      \
+00286         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b)                  \
+00287         {                                                                                                           \
+00288                 return FUNCTION(a, b());                                                                                \
+00289         } 
+00290 
+00291 //
+00292 // Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).
+00293 //
+00294 #define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION)                                                             \
+00295         _GLM_SWIZZLE_TEMPLATE2                                                                                                    \
+00296         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c)   \
+00297         {                                                                                                                         \
+00298                 return FUNCTION(a(), b(), c);                                                                                         \
+00299         }                                                                                                                         \
+00300         _GLM_SWIZZLE_TEMPLATE1                                                                                                    \
+00301         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c)   \
+00302         {                                                                                                                         \
+00303                 return FUNCTION(a(), b(), c);                                                                                         \
+00304         }                                                                                                                         \
+00305         _GLM_SWIZZLE_TEMPLATE1                                                                                                    \
+00306         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\
+00307         {                                                                                                                         \
+00308                 return FUNCTION(a(), b, c);                                                                                           \
+00309         }                                                                                                                         \
+00310         _GLM_SWIZZLE_TEMPLATE1                                                                                                    \
+00311         typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c)           \
+00312         {                                                                                                                         \
+00313                 return FUNCTION(a, b(), c);                                                                                           \
+00314         } 
+00315  
+00316 }//namespace detail 
+00317 }//namespace glm
+00318 
+00319 namespace glm
+00320 {
+00321         namespace detail
+00322         {
+00323                 _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)
+00324                 _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)
+00325         
+00326                 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)
+00327                 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)
+00328                 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)
+00329                 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)
+00330         }
+00331 
+00332     //
+00333     // Swizzles are distinct types from the unswizzled type.  The below macros will
+00334     // provide template specializations for the swizzle types for the given functions
+00335     // so that the compiler does not have any ambiguity to choosing how to handle
+00336     // the function.
+00337     //
+00338     // The alternative is to use the operator()() when calling the function in order
+00339     // to explicitly convert the swizzled type to the unswizzled type.
+00340     //
+00341 
+00342     //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    abs);
+00343     //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    acos);
+00344     //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    acosh);
+00345     //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    all);
+00346     //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    any);
+00347     
+00348     //_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type,  dot);
+00349     //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type,    cross);
+00350     //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type,    step);    
+00351     //_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);
+00352 }
+00353 
+00354 #define _GLM_SWIZZLE2_2_MEMBERS(T,P,E0,E1) \
+00355         struct { glm::detail::swizzle<2,T,P,0,0,-1,-2> E0 ## E0; }; \
+00356         struct { glm::detail::swizzle<2,T,P,0,1,-1,-2> E0 ## E1; }; \
+00357         struct { glm::detail::swizzle<2,T,P,1,0,-1,-2> E1 ## E0; }; \
+00358         struct { glm::detail::swizzle<2,T,P,1,1,-1,-2> E1 ## E1; }; 
+00359 
+00360 #define _GLM_SWIZZLE2_3_MEMBERS(T,P2,E0,E1) \
+00361         struct { glm::detail::swizzle<3,T,P2,0,0,0,-1> E0 ## E0 ## E0; }; \
+00362         struct { glm::detail::swizzle<3,T,P2,0,0,1,-1> E0 ## E0 ## E1; }; \
+00363         struct { glm::detail::swizzle<3,T,P2,0,1,0,-1> E0 ## E1 ## E0; }; \
+00364         struct { glm::detail::swizzle<3,T,P2,0,1,1,-1> E0 ## E1 ## E1; }; \
+00365         struct { glm::detail::swizzle<3,T,P2,1,0,0,-1> E1 ## E0 ## E0; }; \
+00366         struct { glm::detail::swizzle<3,T,P2,1,0,1,-1> E1 ## E0 ## E1; }; \
+00367         struct { glm::detail::swizzle<3,T,P2,1,1,0,-1> E1 ## E1 ## E0; }; \
+00368         struct { glm::detail::swizzle<3,T,P2,1,1,1,-1> E1 ## E1 ## E1; };  
+00369 
+00370 #define _GLM_SWIZZLE2_4_MEMBERS(T,P2,E0,E1) \
+00371         struct { glm::detail::swizzle<4,T,P2,0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+00372         struct { glm::detail::swizzle<4,T,P2,0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+00373         struct { glm::detail::swizzle<4,T,P2,0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+00374         struct { glm::detail::swizzle<4,T,P2,0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+00375         struct { glm::detail::swizzle<4,T,P2,0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+00376         struct { glm::detail::swizzle<4,T,P2,0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+00377         struct { glm::detail::swizzle<4,T,P2,0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+00378         struct { glm::detail::swizzle<4,T,P2,0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+00379         struct { glm::detail::swizzle<4,T,P2,1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+00380         struct { glm::detail::swizzle<4,T,P2,1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+00381         struct { glm::detail::swizzle<4,T,P2,1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+00382         struct { glm::detail::swizzle<4,T,P2,1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+00383         struct { glm::detail::swizzle<4,T,P2,1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+00384         struct { glm::detail::swizzle<4,T,P2,1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+00385         struct { glm::detail::swizzle<4,T,P2,1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+00386         struct { glm::detail::swizzle<4,T,P2,1,1,1,1> E1 ## E1 ## E1 ## E1; };  
+00387 
+00388 #define _GLM_SWIZZLE3_2_MEMBERS(T,P2,E0,E1,E2) \
+00389         struct { glm::detail::swizzle<2,T,P2,0,0,-1,-2> E0 ## E0; }; \
+00390         struct { glm::detail::swizzle<2,T,P2,0,1,-1,-2> E0 ## E1; }; \
+00391         struct { glm::detail::swizzle<2,T,P2,0,2,-1,-2> E0 ## E2; }; \
+00392         struct { glm::detail::swizzle<2,T,P2,1,0,-1,-2> E1 ## E0; }; \
+00393         struct { glm::detail::swizzle<2,T,P2,1,1,-1,-2> E1 ## E1; }; \
+00394         struct { glm::detail::swizzle<2,T,P2,1,2,-1,-2> E1 ## E2; }; \
+00395         struct { glm::detail::swizzle<2,T,P2,2,0,-1,-2> E2 ## E0; }; \
+00396         struct { glm::detail::swizzle<2,T,P2,2,1,-1,-2> E2 ## E1; }; \
+00397         struct { glm::detail::swizzle<2,T,P2,2,2,-1,-2> E2 ## E2; }; 
+00398 
+00399 #define _GLM_SWIZZLE3_3_MEMBERS(T,P,E0,E1,E2) \
+00400         struct { glm::detail::swizzle<3,T,P,0,0,0,-1> E0 ## E0 ## E0; }; \
+00401         struct { glm::detail::swizzle<3,T,P,0,0,1,-1> E0 ## E0 ## E1; }; \
+00402         struct { glm::detail::swizzle<3,T,P,0,0,2,-1> E0 ## E0 ## E2; }; \
+00403         struct { glm::detail::swizzle<3,T,P,0,1,0,-1> E0 ## E1 ## E0; }; \
+00404         struct { glm::detail::swizzle<3,T,P,0,1,1,-1> E0 ## E1 ## E1; }; \
+00405         struct { glm::detail::swizzle<3,T,P,0,1,2,-1> E0 ## E1 ## E2; }; \
+00406         struct { glm::detail::swizzle<3,T,P,0,2,0,-1> E0 ## E2 ## E0; }; \
+00407         struct { glm::detail::swizzle<3,T,P,0,2,1,-1> E0 ## E2 ## E1; }; \
+00408         struct { glm::detail::swizzle<3,T,P,0,2,2,-1> E0 ## E2 ## E2; }; \
+00409         struct { glm::detail::swizzle<3,T,P,1,0,0,-1> E1 ## E0 ## E0; }; \
+00410         struct { glm::detail::swizzle<3,T,P,1,0,1,-1> E1 ## E0 ## E1; }; \
+00411         struct { glm::detail::swizzle<3,T,P,1,0,2,-1> E1 ## E0 ## E2; }; \
+00412         struct { glm::detail::swizzle<3,T,P,1,1,0,-1> E1 ## E1 ## E0; }; \
+00413         struct { glm::detail::swizzle<3,T,P,1,1,1,-1> E1 ## E1 ## E1; }; \
+00414         struct { glm::detail::swizzle<3,T,P,1,1,2,-1> E1 ## E1 ## E2; }; \
+00415         struct { glm::detail::swizzle<3,T,P,1,2,0,-1> E1 ## E2 ## E0; }; \
+00416         struct { glm::detail::swizzle<3,T,P,1,2,1,-1> E1 ## E2 ## E1; }; \
+00417         struct { glm::detail::swizzle<3,T,P,1,2,2,-1> E1 ## E2 ## E2; }; \
+00418         struct { glm::detail::swizzle<3,T,P,2,0,0,-1> E2 ## E0 ## E0; }; \
+00419         struct { glm::detail::swizzle<3,T,P,2,0,1,-1> E2 ## E0 ## E1; }; \
+00420         struct { glm::detail::swizzle<3,T,P,2,0,2,-1> E2 ## E0 ## E2; }; \
+00421         struct { glm::detail::swizzle<3,T,P,2,1,0,-1> E2 ## E1 ## E0; }; \
+00422         struct { glm::detail::swizzle<3,T,P,2,1,1,-1> E2 ## E1 ## E1; }; \
+00423         struct { glm::detail::swizzle<3,T,P,2,1,2,-1> E2 ## E1 ## E2; }; \
+00424         struct { glm::detail::swizzle<3,T,P,2,2,0,-1> E2 ## E2 ## E0; }; \
+00425         struct { glm::detail::swizzle<3,T,P,2,2,1,-1> E2 ## E2 ## E1; }; \
+00426         struct { glm::detail::swizzle<3,T,P,2,2,2,-1> E2 ## E2 ## E2; };
+00427 
+00428 #define _GLM_SWIZZLE3_4_MEMBERS(T,P2,E0,E1,E2) \
+00429         struct { glm::detail::swizzle<4,T,P2,0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+00430         struct { glm::detail::swizzle<4,T,P2,0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+00431         struct { glm::detail::swizzle<4,T,P2,0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
+00432         struct { glm::detail::swizzle<4,T,P2,0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+00433         struct { glm::detail::swizzle<4,T,P2,0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+00434         struct { glm::detail::swizzle<4,T,P2,0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
+00435         struct { glm::detail::swizzle<4,T,P2,0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
+00436         struct { glm::detail::swizzle<4,T,P2,0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
+00437         struct { glm::detail::swizzle<4,T,P2,0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
+00438         struct { glm::detail::swizzle<4,T,P2,0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+00439         struct { glm::detail::swizzle<4,T,P2,0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+00440         struct { glm::detail::swizzle<4,T,P2,0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
+00441         struct { glm::detail::swizzle<4,T,P2,0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+00442         struct { glm::detail::swizzle<4,T,P2,0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+00443         struct { glm::detail::swizzle<4,T,P2,0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
+00444         struct { glm::detail::swizzle<4,T,P2,0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
+00445         struct { glm::detail::swizzle<4,T,P2,0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
+00446         struct { glm::detail::swizzle<4,T,P2,0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
+00447         struct { glm::detail::swizzle<4,T,P2,0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
+00448         struct { glm::detail::swizzle<4,T,P2,0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
+00449         struct { glm::detail::swizzle<4,T,P2,0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
+00450         struct { glm::detail::swizzle<4,T,P2,0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
+00451         struct { glm::detail::swizzle<4,T,P2,0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
+00452         struct { glm::detail::swizzle<4,T,P2,0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
+00453         struct { glm::detail::swizzle<4,T,P2,0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
+00454         struct { glm::detail::swizzle<4,T,P2,0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
+00455         struct { glm::detail::swizzle<4,T,P2,0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
+00456         struct { glm::detail::swizzle<4,T,P2,1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+00457         struct { glm::detail::swizzle<4,T,P2,1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+00458         struct { glm::detail::swizzle<4,T,P2,1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
+00459         struct { glm::detail::swizzle<4,T,P2,1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+00460         struct { glm::detail::swizzle<4,T,P2,1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+00461         struct { glm::detail::swizzle<4,T,P2,1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
+00462         struct { glm::detail::swizzle<4,T,P2,1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
+00463         struct { glm::detail::swizzle<4,T,P2,1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
+00464         struct { glm::detail::swizzle<4,T,P2,1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
+00465         struct { glm::detail::swizzle<4,T,P2,1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+00466         struct { glm::detail::swizzle<4,T,P2,1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+00467         struct { glm::detail::swizzle<4,T,P2,1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
+00468         struct { glm::detail::swizzle<4,T,P2,1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+00469         struct { glm::detail::swizzle<4,T,P2,1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
+00470         struct { glm::detail::swizzle<4,T,P2,1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
+00471         struct { glm::detail::swizzle<4,T,P2,1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
+00472         struct { glm::detail::swizzle<4,T,P2,1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
+00473         struct { glm::detail::swizzle<4,T,P2,1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
+00474         struct { glm::detail::swizzle<4,T,P2,1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
+00475         struct { glm::detail::swizzle<4,T,P2,1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
+00476         struct { glm::detail::swizzle<4,T,P2,1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
+00477         struct { glm::detail::swizzle<4,T,P2,1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
+00478         struct { glm::detail::swizzle<4,T,P2,1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
+00479         struct { glm::detail::swizzle<4,T,P2,1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
+00480         struct { glm::detail::swizzle<4,T,P2,1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
+00481         struct { glm::detail::swizzle<4,T,P2,1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
+00482         struct { glm::detail::swizzle<4,T,P2,1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
+00483         struct { glm::detail::swizzle<4,T,P2,2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
+00484         struct { glm::detail::swizzle<4,T,P2,2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
+00485         struct { glm::detail::swizzle<4,T,P2,2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
+00486         struct { glm::detail::swizzle<4,T,P2,2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
+00487         struct { glm::detail::swizzle<4,T,P2,2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
+00488         struct { glm::detail::swizzle<4,T,P2,2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
+00489         struct { glm::detail::swizzle<4,T,P2,2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
+00490         struct { glm::detail::swizzle<4,T,P2,2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
+00491         struct { glm::detail::swizzle<4,T,P2,2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
+00492         struct { glm::detail::swizzle<4,T,P2,2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
+00493         struct { glm::detail::swizzle<4,T,P2,2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
+00494         struct { glm::detail::swizzle<4,T,P2,2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
+00495         struct { glm::detail::swizzle<4,T,P2,2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
+00496         struct { glm::detail::swizzle<4,T,P2,2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
+00497         struct { glm::detail::swizzle<4,T,P2,2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
+00498         struct { glm::detail::swizzle<4,T,P2,2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
+00499         struct { glm::detail::swizzle<4,T,P2,2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
+00500         struct { glm::detail::swizzle<4,T,P2,2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
+00501         struct { glm::detail::swizzle<4,T,P2,2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
+00502         struct { glm::detail::swizzle<4,T,P2,2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
+00503         struct { glm::detail::swizzle<4,T,P2,2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
+00504         struct { glm::detail::swizzle<4,T,P2,2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
+00505         struct { glm::detail::swizzle<4,T,P2,2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
+00506         struct { glm::detail::swizzle<4,T,P2,2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
+00507         struct { glm::detail::swizzle<4,T,P2,2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
+00508         struct { glm::detail::swizzle<4,T,P2,2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
+00509         struct { glm::detail::swizzle<4,T,P2,2,2,2,2> E2 ## E2 ## E2 ## E2; }; 
+00510 
+00511 #define _GLM_SWIZZLE4_2_MEMBERS(T,P,E0,E1,E2,E3) \
+00512         struct { glm::detail::swizzle<2,T,P,0,0,-1,-2> E0 ## E0; }; \
+00513         struct { glm::detail::swizzle<2,T,P,0,1,-1,-2> E0 ## E1; }; \
+00514         struct { glm::detail::swizzle<2,T,P,0,2,-1,-2> E0 ## E2; }; \
+00515         struct { glm::detail::swizzle<2,T,P,0,3,-1,-2> E0 ## E3; }; \
+00516         struct { glm::detail::swizzle<2,T,P,1,0,-1,-2> E1 ## E0; }; \
+00517         struct { glm::detail::swizzle<2,T,P,1,1,-1,-2> E1 ## E1; }; \
+00518         struct { glm::detail::swizzle<2,T,P,1,2,-1,-2> E1 ## E2; }; \
+00519         struct { glm::detail::swizzle<2,T,P,1,3,-1,-2> E1 ## E3; }; \
+00520         struct { glm::detail::swizzle<2,T,P,2,0,-1,-2> E2 ## E0; }; \
+00521         struct { glm::detail::swizzle<2,T,P,2,1,-1,-2> E2 ## E1; }; \
+00522         struct { glm::detail::swizzle<2,T,P,2,2,-1,-2> E2 ## E2; }; \
+00523         struct { glm::detail::swizzle<2,T,P,2,3,-1,-2> E2 ## E3; }; \
+00524         struct { glm::detail::swizzle<2,T,P,3,0,-1,-2> E3 ## E0; }; \
+00525         struct { glm::detail::swizzle<2,T,P,3,1,-1,-2> E3 ## E1; }; \
+00526         struct { glm::detail::swizzle<2,T,P,3,2,-1,-2> E3 ## E2; }; \
+00527         struct { glm::detail::swizzle<2,T,P,3,3,-1,-2> E3 ## E3; }; 
+00528 
+00529 #define _GLM_SWIZZLE4_3_MEMBERS(T,P,E0,E1,E2,E3) \
+00530         struct { glm::detail::swizzle<3,T,P,0,0,0,-1> E0 ## E0 ## E0; }; \
+00531         struct { glm::detail::swizzle<3,T,P,0,0,1,-1> E0 ## E0 ## E1; }; \
+00532         struct { glm::detail::swizzle<3,T,P,0,0,2,-1> E0 ## E0 ## E2; }; \
+00533         struct { glm::detail::swizzle<3,T,P,0,0,3,-1> E0 ## E0 ## E3; }; \
+00534         struct { glm::detail::swizzle<3,T,P,0,1,0,-1> E0 ## E1 ## E0; }; \
+00535         struct { glm::detail::swizzle<3,T,P,0,1,1,-1> E0 ## E1 ## E1; }; \
+00536         struct { glm::detail::swizzle<3,T,P,0,1,2,-1> E0 ## E1 ## E2; }; \
+00537         struct { glm::detail::swizzle<3,T,P,0,1,3,-1> E0 ## E1 ## E3; }; \
+00538         struct { glm::detail::swizzle<3,T,P,0,2,0,-1> E0 ## E2 ## E0; }; \
+00539         struct { glm::detail::swizzle<3,T,P,0,2,1,-1> E0 ## E2 ## E1; }; \
+00540         struct { glm::detail::swizzle<3,T,P,0,2,2,-1> E0 ## E2 ## E2; }; \
+00541         struct { glm::detail::swizzle<3,T,P,0,2,3,-1> E0 ## E2 ## E3; }; \
+00542         struct { glm::detail::swizzle<3,T,P,0,3,0,-1> E0 ## E3 ## E0; }; \
+00543         struct { glm::detail::swizzle<3,T,P,0,3,1,-1> E0 ## E3 ## E1; }; \
+00544         struct { glm::detail::swizzle<3,T,P,0,3,2,-1> E0 ## E3 ## E2; }; \
+00545         struct { glm::detail::swizzle<3,T,P,0,3,3,-1> E0 ## E3 ## E3; }; \
+00546         struct { glm::detail::swizzle<3,T,P,1,0,0,-1> E1 ## E0 ## E0; }; \
+00547         struct { glm::detail::swizzle<3,T,P,1,0,1,-1> E1 ## E0 ## E1; }; \
+00548         struct { glm::detail::swizzle<3,T,P,1,0,2,-1> E1 ## E0 ## E2; }; \
+00549         struct { glm::detail::swizzle<3,T,P,1,0,3,-1> E1 ## E0 ## E3; }; \
+00550         struct { glm::detail::swizzle<3,T,P,1,1,0,-1> E1 ## E1 ## E0; }; \
+00551         struct { glm::detail::swizzle<3,T,P,1,1,1,-1> E1 ## E1 ## E1; }; \
+00552         struct { glm::detail::swizzle<3,T,P,1,1,2,-1> E1 ## E1 ## E2; }; \
+00553         struct { glm::detail::swizzle<3,T,P,1,1,3,-1> E1 ## E1 ## E3; }; \
+00554         struct { glm::detail::swizzle<3,T,P,1,2,0,-1> E1 ## E2 ## E0; }; \
+00555         struct { glm::detail::swizzle<3,T,P,1,2,1,-1> E1 ## E2 ## E1; }; \
+00556         struct { glm::detail::swizzle<3,T,P,1,2,2,-1> E1 ## E2 ## E2; }; \
+00557         struct { glm::detail::swizzle<3,T,P,1,2,3,-1> E1 ## E2 ## E3; }; \
+00558         struct { glm::detail::swizzle<3,T,P,1,3,0,-1> E1 ## E3 ## E0; }; \
+00559         struct { glm::detail::swizzle<3,T,P,1,3,1,-1> E1 ## E3 ## E1; }; \
+00560         struct { glm::detail::swizzle<3,T,P,1,3,2,-1> E1 ## E3 ## E2; }; \
+00561         struct { glm::detail::swizzle<3,T,P,1,3,3,-1> E1 ## E3 ## E3; }; \
+00562         struct { glm::detail::swizzle<3,T,P,2,0,0,-1> E2 ## E0 ## E0; }; \
+00563         struct { glm::detail::swizzle<3,T,P,2,0,1,-1> E2 ## E0 ## E1; }; \
+00564         struct { glm::detail::swizzle<3,T,P,2,0,2,-1> E2 ## E0 ## E2; }; \
+00565         struct { glm::detail::swizzle<3,T,P,2,0,3,-1> E2 ## E0 ## E3; }; \
+00566         struct { glm::detail::swizzle<3,T,P,2,1,0,-1> E2 ## E1 ## E0; }; \
+00567         struct { glm::detail::swizzle<3,T,P,2,1,1,-1> E2 ## E1 ## E1; }; \
+00568         struct { glm::detail::swizzle<3,T,P,2,1,2,-1> E2 ## E1 ## E2; }; \
+00569         struct { glm::detail::swizzle<3,T,P,2,1,3,-1> E2 ## E1 ## E3; }; \
+00570         struct { glm::detail::swizzle<3,T,P,2,2,0,-1> E2 ## E2 ## E0; }; \
+00571         struct { glm::detail::swizzle<3,T,P,2,2,1,-1> E2 ## E2 ## E1; }; \
+00572         struct { glm::detail::swizzle<3,T,P,2,2,2,-1> E2 ## E2 ## E2; }; \
+00573         struct { glm::detail::swizzle<3,T,P,2,2,3,-1> E2 ## E2 ## E3; }; \
+00574         struct { glm::detail::swizzle<3,T,P,2,3,0,-1> E2 ## E3 ## E0; }; \
+00575         struct { glm::detail::swizzle<3,T,P,2,3,1,-1> E2 ## E3 ## E1; }; \
+00576         struct { glm::detail::swizzle<3,T,P,2,3,2,-1> E2 ## E3 ## E2; }; \
+00577         struct { glm::detail::swizzle<3,T,P,2,3,3,-1> E2 ## E3 ## E3; }; \
+00578         struct { glm::detail::swizzle<3,T,P,3,0,0,-1> E3 ## E0 ## E0; }; \
+00579         struct { glm::detail::swizzle<3,T,P,3,0,1,-1> E3 ## E0 ## E1; }; \
+00580         struct { glm::detail::swizzle<3,T,P,3,0,2,-1> E3 ## E0 ## E2; }; \
+00581         struct { glm::detail::swizzle<3,T,P,3,0,3,-1> E3 ## E0 ## E3; }; \
+00582         struct { glm::detail::swizzle<3,T,P,3,1,0,-1> E3 ## E1 ## E0; }; \
+00583         struct { glm::detail::swizzle<3,T,P,3,1,1,-1> E3 ## E1 ## E1; }; \
+00584         struct { glm::detail::swizzle<3,T,P,3,1,2,-1> E3 ## E1 ## E2; }; \
+00585         struct { glm::detail::swizzle<3,T,P,3,1,3,-1> E3 ## E1 ## E3; }; \
+00586         struct { glm::detail::swizzle<3,T,P,3,2,0,-1> E3 ## E2 ## E0; }; \
+00587         struct { glm::detail::swizzle<3,T,P,3,2,1,-1> E3 ## E2 ## E1; }; \
+00588         struct { glm::detail::swizzle<3,T,P,3,2,2,-1> E3 ## E2 ## E2; }; \
+00589         struct { glm::detail::swizzle<3,T,P,3,2,3,-1> E3 ## E2 ## E3; }; \
+00590         struct { glm::detail::swizzle<3,T,P,3,3,0,-1> E3 ## E3 ## E0; }; \
+00591         struct { glm::detail::swizzle<3,T,P,3,3,1,-1> E3 ## E3 ## E1; }; \
+00592         struct { glm::detail::swizzle<3,T,P,3,3,2,-1> E3 ## E3 ## E2; }; \
+00593         struct { glm::detail::swizzle<3,T,P,3,3,3,-1> E3 ## E3 ## E3; };  
+00594 
+00595 #define _GLM_SWIZZLE4_4_MEMBERS(T,P,E0,E1,E2,E3) \
+00596         struct { glm::detail::swizzle<4,T,P,0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+00597         struct { glm::detail::swizzle<4,T,P,0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+00598         struct { glm::detail::swizzle<4,T,P,0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
+00599         struct { glm::detail::swizzle<4,T,P,0,0,0,3> E0 ## E0 ## E0 ## E3; }; \
+00600         struct { glm::detail::swizzle<4,T,P,0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+00601         struct { glm::detail::swizzle<4,T,P,0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+00602         struct { glm::detail::swizzle<4,T,P,0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
+00603         struct { glm::detail::swizzle<4,T,P,0,0,1,3> E0 ## E0 ## E1 ## E3; }; \
+00604         struct { glm::detail::swizzle<4,T,P,0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
+00605         struct { glm::detail::swizzle<4,T,P,0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
+00606         struct { glm::detail::swizzle<4,T,P,0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
+00607         struct { glm::detail::swizzle<4,T,P,0,0,2,3> E0 ## E0 ## E2 ## E3; }; \
+00608         struct { glm::detail::swizzle<4,T,P,0,0,3,0> E0 ## E0 ## E3 ## E0; }; \
+00609         struct { glm::detail::swizzle<4,T,P,0,0,3,1> E0 ## E0 ## E3 ## E1; }; \
+00610         struct { glm::detail::swizzle<4,T,P,0,0,3,2> E0 ## E0 ## E3 ## E2; }; \
+00611         struct { glm::detail::swizzle<4,T,P,0,0,3,3> E0 ## E0 ## E3 ## E3; }; \
+00612         struct { glm::detail::swizzle<4,T,P,0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+00613         struct { glm::detail::swizzle<4,T,P,0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+00614         struct { glm::detail::swizzle<4,T,P,0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
+00615         struct { glm::detail::swizzle<4,T,P,0,1,0,3> E0 ## E1 ## E0 ## E3; }; \
+00616         struct { glm::detail::swizzle<4,T,P,0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+00617         struct { glm::detail::swizzle<4,T,P,0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+00618         struct { glm::detail::swizzle<4,T,P,0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
+00619         struct { glm::detail::swizzle<4,T,P,0,1,1,3> E0 ## E1 ## E1 ## E3; }; \
+00620         struct { glm::detail::swizzle<4,T,P,0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
+00621         struct { glm::detail::swizzle<4,T,P,0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
+00622         struct { glm::detail::swizzle<4,T,P,0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
+00623         struct { glm::detail::swizzle<4,T,P,0,1,2,3> E0 ## E1 ## E2 ## E3; }; \
+00624         struct { glm::detail::swizzle<4,T,P,0,1,3,0> E0 ## E1 ## E3 ## E0; }; \
+00625         struct { glm::detail::swizzle<4,T,P,0,1,3,1> E0 ## E1 ## E3 ## E1; }; \
+00626         struct { glm::detail::swizzle<4,T,P,0,1,3,2> E0 ## E1 ## E3 ## E2; }; \
+00627         struct { glm::detail::swizzle<4,T,P,0,1,3,3> E0 ## E1 ## E3 ## E3; }; \
+00628         struct { glm::detail::swizzle<4,T,P,0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
+00629         struct { glm::detail::swizzle<4,T,P,0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
+00630         struct { glm::detail::swizzle<4,T,P,0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
+00631         struct { glm::detail::swizzle<4,T,P,0,2,0,3> E0 ## E2 ## E0 ## E3; }; \
+00632         struct { glm::detail::swizzle<4,T,P,0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
+00633         struct { glm::detail::swizzle<4,T,P,0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
+00634         struct { glm::detail::swizzle<4,T,P,0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
+00635         struct { glm::detail::swizzle<4,T,P,0,2,1,3> E0 ## E2 ## E1 ## E3; }; \
+00636         struct { glm::detail::swizzle<4,T,P,0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
+00637         struct { glm::detail::swizzle<4,T,P,0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
+00638         struct { glm::detail::swizzle<4,T,P,0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
+00639         struct { glm::detail::swizzle<4,T,P,0,2,2,3> E0 ## E2 ## E2 ## E3; }; \
+00640         struct { glm::detail::swizzle<4,T,P,0,2,3,0> E0 ## E2 ## E3 ## E0; }; \
+00641         struct { glm::detail::swizzle<4,T,P,0,2,3,1> E0 ## E2 ## E3 ## E1; }; \
+00642         struct { glm::detail::swizzle<4,T,P,0,2,3,2> E0 ## E2 ## E3 ## E2; }; \
+00643         struct { glm::detail::swizzle<4,T,P,0,2,3,3> E0 ## E2 ## E3 ## E3; }; \
+00644         struct { glm::detail::swizzle<4,T,P,1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+00645         struct { glm::detail::swizzle<4,T,P,1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+00646         struct { glm::detail::swizzle<4,T,P,1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
+00647         struct { glm::detail::swizzle<4,T,P,1,0,0,3> E1 ## E0 ## E0 ## E3; }; \
+00648         struct { glm::detail::swizzle<4,T,P,1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+00649         struct { glm::detail::swizzle<4,T,P,1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+00650         struct { glm::detail::swizzle<4,T,P,1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
+00651         struct { glm::detail::swizzle<4,T,P,1,0,1,3> E1 ## E0 ## E1 ## E3; }; \
+00652         struct { glm::detail::swizzle<4,T,P,1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
+00653         struct { glm::detail::swizzle<4,T,P,1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
+00654         struct { glm::detail::swizzle<4,T,P,1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
+00655         struct { glm::detail::swizzle<4,T,P,1,0,2,3> E1 ## E0 ## E2 ## E3; }; \
+00656         struct { glm::detail::swizzle<4,T,P,1,0,3,0> E1 ## E0 ## E3 ## E0; }; \
+00657         struct { glm::detail::swizzle<4,T,P,1,0,3,1> E1 ## E0 ## E3 ## E1; }; \
+00658         struct { glm::detail::swizzle<4,T,P,1,0,3,2> E1 ## E0 ## E3 ## E2; }; \
+00659         struct { glm::detail::swizzle<4,T,P,1,0,3,3> E1 ## E0 ## E3 ## E3; }; \
+00660         struct { glm::detail::swizzle<4,T,P,1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+00661         struct { glm::detail::swizzle<4,T,P,1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+00662         struct { glm::detail::swizzle<4,T,P,1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
+00663         struct { glm::detail::swizzle<4,T,P,1,1,0,3> E1 ## E1 ## E0 ## E3; }; \
+00664         struct { glm::detail::swizzle<4,T,P,1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+00665         struct { glm::detail::swizzle<4,T,P,1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
+00666         struct { glm::detail::swizzle<4,T,P,1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
+00667         struct { glm::detail::swizzle<4,T,P,1,1,1,3> E1 ## E1 ## E1 ## E3; }; \
+00668         struct { glm::detail::swizzle<4,T,P,1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
+00669         struct { glm::detail::swizzle<4,T,P,1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
+00670         struct { glm::detail::swizzle<4,T,P,1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
+00671         struct { glm::detail::swizzle<4,T,P,1,1,2,3> E1 ## E1 ## E2 ## E3; }; \
+00672         struct { glm::detail::swizzle<4,T,P,1,1,3,0> E1 ## E1 ## E3 ## E0; }; \
+00673         struct { glm::detail::swizzle<4,T,P,1,1,3,1> E1 ## E1 ## E3 ## E1; }; \
+00674         struct { glm::detail::swizzle<4,T,P,1,1,3,2> E1 ## E1 ## E3 ## E2; }; \
+00675         struct { glm::detail::swizzle<4,T,P,1,1,3,3> E1 ## E1 ## E3 ## E3; }; \
+00676         struct { glm::detail::swizzle<4,T,P,1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
+00677         struct { glm::detail::swizzle<4,T,P,1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
+00678         struct { glm::detail::swizzle<4,T,P,1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
+00679         struct { glm::detail::swizzle<4,T,P,1,2,0,3> E1 ## E2 ## E0 ## E3; }; \
+00680         struct { glm::detail::swizzle<4,T,P,1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
+00681         struct { glm::detail::swizzle<4,T,P,1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
+00682         struct { glm::detail::swizzle<4,T,P,1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
+00683         struct { glm::detail::swizzle<4,T,P,1,2,1,3> E1 ## E2 ## E1 ## E3; }; \
+00684         struct { glm::detail::swizzle<4,T,P,1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
+00685         struct { glm::detail::swizzle<4,T,P,1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
+00686         struct { glm::detail::swizzle<4,T,P,1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
+00687         struct { glm::detail::swizzle<4,T,P,1,2,2,3> E1 ## E2 ## E2 ## E3; }; \
+00688         struct { glm::detail::swizzle<4,T,P,1,2,3,0> E1 ## E2 ## E3 ## E0; }; \
+00689         struct { glm::detail::swizzle<4,T,P,1,2,3,1> E1 ## E2 ## E3 ## E1; }; \
+00690         struct { glm::detail::swizzle<4,T,P,1,2,3,2> E1 ## E2 ## E3 ## E2; }; \
+00691         struct { glm::detail::swizzle<4,T,P,1,2,3,3> E1 ## E2 ## E3 ## E3; }; \
+00692         struct { glm::detail::swizzle<4,T,P,1,3,0,0> E1 ## E3 ## E0 ## E0; }; \
+00693         struct { glm::detail::swizzle<4,T,P,1,3,0,1> E1 ## E3 ## E0 ## E1; }; \
+00694         struct { glm::detail::swizzle<4,T,P,1,3,0,2> E1 ## E3 ## E0 ## E2; }; \
+00695         struct { glm::detail::swizzle<4,T,P,1,3,0,3> E1 ## E3 ## E0 ## E3; }; \
+00696         struct { glm::detail::swizzle<4,T,P,1,3,1,0> E1 ## E3 ## E1 ## E0; }; \
+00697         struct { glm::detail::swizzle<4,T,P,1,3,1,1> E1 ## E3 ## E1 ## E1; }; \
+00698         struct { glm::detail::swizzle<4,T,P,1,3,1,2> E1 ## E3 ## E1 ## E2; }; \
+00699         struct { glm::detail::swizzle<4,T,P,1,3,1,3> E1 ## E3 ## E1 ## E3; }; \
+00700         struct { glm::detail::swizzle<4,T,P,1,3,2,0> E1 ## E3 ## E2 ## E0; }; \
+00701         struct { glm::detail::swizzle<4,T,P,1,3,2,1> E1 ## E3 ## E2 ## E1; }; \
+00702         struct { glm::detail::swizzle<4,T,P,1,3,2,2> E1 ## E3 ## E2 ## E2; }; \
+00703         struct { glm::detail::swizzle<4,T,P,1,3,2,3> E1 ## E3 ## E2 ## E3; }; \
+00704         struct { glm::detail::swizzle<4,T,P,1,3,3,0> E1 ## E3 ## E3 ## E0; }; \
+00705         struct { glm::detail::swizzle<4,T,P,1,3,3,1> E1 ## E3 ## E3 ## E1; }; \
+00706         struct { glm::detail::swizzle<4,T,P,1,3,3,2> E1 ## E3 ## E3 ## E2; }; \
+00707         struct { glm::detail::swizzle<4,T,P,1,3,3,3> E1 ## E3 ## E3 ## E3; }; \
+00708         struct { glm::detail::swizzle<4,T,P,2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
+00709         struct { glm::detail::swizzle<4,T,P,2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
+00710         struct { glm::detail::swizzle<4,T,P,2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
+00711         struct { glm::detail::swizzle<4,T,P,2,0,0,3> E2 ## E0 ## E0 ## E3; }; \
+00712         struct { glm::detail::swizzle<4,T,P,2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
+00713         struct { glm::detail::swizzle<4,T,P,2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
+00714         struct { glm::detail::swizzle<4,T,P,2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
+00715         struct { glm::detail::swizzle<4,T,P,2,0,1,3> E2 ## E0 ## E1 ## E3; }; \
+00716         struct { glm::detail::swizzle<4,T,P,2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
+00717         struct { glm::detail::swizzle<4,T,P,2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
+00718         struct { glm::detail::swizzle<4,T,P,2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
+00719         struct { glm::detail::swizzle<4,T,P,2,0,2,3> E2 ## E0 ## E2 ## E3; }; \
+00720         struct { glm::detail::swizzle<4,T,P,2,0,3,0> E2 ## E0 ## E3 ## E0; }; \
+00721         struct { glm::detail::swizzle<4,T,P,2,0,3,1> E2 ## E0 ## E3 ## E1; }; \
+00722         struct { glm::detail::swizzle<4,T,P,2,0,3,2> E2 ## E0 ## E3 ## E2; }; \
+00723         struct { glm::detail::swizzle<4,T,P,2,0,3,3> E2 ## E0 ## E3 ## E3; }; \
+00724         struct { glm::detail::swizzle<4,T,P,2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
+00725         struct { glm::detail::swizzle<4,T,P,2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
+00726         struct { glm::detail::swizzle<4,T,P,2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
+00727         struct { glm::detail::swizzle<4,T,P,2,1,0,3> E2 ## E1 ## E0 ## E3; }; \
+00728         struct { glm::detail::swizzle<4,T,P,2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
+00729         struct { glm::detail::swizzle<4,T,P,2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
+00730         struct { glm::detail::swizzle<4,T,P,2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
+00731         struct { glm::detail::swizzle<4,T,P,2,1,1,3> E2 ## E1 ## E1 ## E3; }; \
+00732         struct { glm::detail::swizzle<4,T,P,2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
+00733         struct { glm::detail::swizzle<4,T,P,2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
+00734         struct { glm::detail::swizzle<4,T,P,2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
+00735         struct { glm::detail::swizzle<4,T,P,2,1,2,3> E2 ## E1 ## E2 ## E3; }; \
+00736         struct { glm::detail::swizzle<4,T,P,2,1,3,0> E2 ## E1 ## E3 ## E0; }; \
+00737         struct { glm::detail::swizzle<4,T,P,2,1,3,1> E2 ## E1 ## E3 ## E1; }; \
+00738         struct { glm::detail::swizzle<4,T,P,2,1,3,2> E2 ## E1 ## E3 ## E2; }; \
+00739         struct { glm::detail::swizzle<4,T,P,2,1,3,3> E2 ## E1 ## E3 ## E3; }; \
+00740         struct { glm::detail::swizzle<4,T,P,2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
+00741         struct { glm::detail::swizzle<4,T,P,2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
+00742         struct { glm::detail::swizzle<4,T,P,2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
+00743         struct { glm::detail::swizzle<4,T,P,2,2,0,3> E2 ## E2 ## E0 ## E3; }; \
+00744         struct { glm::detail::swizzle<4,T,P,2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
+00745         struct { glm::detail::swizzle<4,T,P,2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
+00746         struct { glm::detail::swizzle<4,T,P,2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
+00747         struct { glm::detail::swizzle<4,T,P,2,2,1,3> E2 ## E2 ## E1 ## E3; }; \
+00748         struct { glm::detail::swizzle<4,T,P,2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
+00749         struct { glm::detail::swizzle<4,T,P,2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
+00750         struct { glm::detail::swizzle<4,T,P,2,2,2,2> E2 ## E2 ## E2 ## E2; }; \
+00751         struct { glm::detail::swizzle<4,T,P,2,2,2,3> E2 ## E2 ## E2 ## E3; }; \
+00752         struct { glm::detail::swizzle<4,T,P,2,2,3,0> E2 ## E2 ## E3 ## E0; }; \
+00753         struct { glm::detail::swizzle<4,T,P,2,2,3,1> E2 ## E2 ## E3 ## E1; }; \
+00754         struct { glm::detail::swizzle<4,T,P,2,2,3,2> E2 ## E2 ## E3 ## E2; }; \
+00755         struct { glm::detail::swizzle<4,T,P,2,2,3,3> E2 ## E2 ## E3 ## E3; }; \
+00756         struct { glm::detail::swizzle<4,T,P,2,3,0,0> E2 ## E3 ## E0 ## E0; }; \
+00757         struct { glm::detail::swizzle<4,T,P,2,3,0,1> E2 ## E3 ## E0 ## E1; }; \
+00758         struct { glm::detail::swizzle<4,T,P,2,3,0,2> E2 ## E3 ## E0 ## E2; }; \
+00759         struct { glm::detail::swizzle<4,T,P,2,3,0,3> E2 ## E3 ## E0 ## E3; }; \
+00760         struct { glm::detail::swizzle<4,T,P,2,3,1,0> E2 ## E3 ## E1 ## E0; }; \
+00761         struct { glm::detail::swizzle<4,T,P,2,3,1,1> E2 ## E3 ## E1 ## E1; }; \
+00762         struct { glm::detail::swizzle<4,T,P,2,3,1,2> E2 ## E3 ## E1 ## E2; }; \
+00763         struct { glm::detail::swizzle<4,T,P,2,3,1,3> E2 ## E3 ## E1 ## E3; }; \
+00764         struct { glm::detail::swizzle<4,T,P,2,3,2,0> E2 ## E3 ## E2 ## E0; }; \
+00765         struct { glm::detail::swizzle<4,T,P,2,3,2,1> E2 ## E3 ## E2 ## E1; }; \
+00766         struct { glm::detail::swizzle<4,T,P,2,3,2,2> E2 ## E3 ## E2 ## E2; }; \
+00767         struct { glm::detail::swizzle<4,T,P,2,3,2,3> E2 ## E3 ## E2 ## E3; }; \
+00768         struct { glm::detail::swizzle<4,T,P,2,3,3,0> E2 ## E3 ## E3 ## E0; }; \
+00769         struct { glm::detail::swizzle<4,T,P,2,3,3,1> E2 ## E3 ## E3 ## E1; }; \
+00770         struct { glm::detail::swizzle<4,T,P,2,3,3,2> E2 ## E3 ## E3 ## E2; }; \
+00771         struct { glm::detail::swizzle<4,T,P,2,3,3,3> E2 ## E3 ## E3 ## E3; }; \
+00772         struct { glm::detail::swizzle<4,T,P,3,0,0,0> E3 ## E0 ## E0 ## E0; }; \
+00773         struct { glm::detail::swizzle<4,T,P,3,0,0,1> E3 ## E0 ## E0 ## E1; }; \
+00774         struct { glm::detail::swizzle<4,T,P,3,0,0,2> E3 ## E0 ## E0 ## E2; }; \
+00775         struct { glm::detail::swizzle<4,T,P,3,0,0,3> E3 ## E0 ## E0 ## E3; }; \
+00776         struct { glm::detail::swizzle<4,T,P,3,0,1,0> E3 ## E0 ## E1 ## E0; }; \
+00777         struct { glm::detail::swizzle<4,T,P,3,0,1,1> E3 ## E0 ## E1 ## E1; }; \
+00778         struct { glm::detail::swizzle<4,T,P,3,0,1,2> E3 ## E0 ## E1 ## E2; }; \
+00779         struct { glm::detail::swizzle<4,T,P,3,0,1,3> E3 ## E0 ## E1 ## E3; }; \
+00780         struct { glm::detail::swizzle<4,T,P,3,0,2,0> E3 ## E0 ## E2 ## E0; }; \
+00781         struct { glm::detail::swizzle<4,T,P,3,0,2,1> E3 ## E0 ## E2 ## E1; }; \
+00782         struct { glm::detail::swizzle<4,T,P,3,0,2,2> E3 ## E0 ## E2 ## E2; }; \
+00783         struct { glm::detail::swizzle<4,T,P,3,0,2,3> E3 ## E0 ## E2 ## E3; }; \
+00784         struct { glm::detail::swizzle<4,T,P,3,0,3,0> E3 ## E0 ## E3 ## E0; }; \
+00785         struct { glm::detail::swizzle<4,T,P,3,0,3,1> E3 ## E0 ## E3 ## E1; }; \
+00786         struct { glm::detail::swizzle<4,T,P,3,0,3,2> E3 ## E0 ## E3 ## E2; }; \
+00787         struct { glm::detail::swizzle<4,T,P,3,0,3,3> E3 ## E0 ## E3 ## E3; }; \
+00788         struct { glm::detail::swizzle<4,T,P,3,1,0,0> E3 ## E1 ## E0 ## E0; }; \
+00789         struct { glm::detail::swizzle<4,T,P,3,1,0,1> E3 ## E1 ## E0 ## E1; }; \
+00790         struct { glm::detail::swizzle<4,T,P,3,1,0,2> E3 ## E1 ## E0 ## E2; }; \
+00791         struct { glm::detail::swizzle<4,T,P,3,1,0,3> E3 ## E1 ## E0 ## E3; }; \
+00792         struct { glm::detail::swizzle<4,T,P,3,1,1,0> E3 ## E1 ## E1 ## E0; }; \
+00793         struct { glm::detail::swizzle<4,T,P,3,1,1,1> E3 ## E1 ## E1 ## E1; }; \
+00794         struct { glm::detail::swizzle<4,T,P,3,1,1,2> E3 ## E1 ## E1 ## E2; }; \
+00795         struct { glm::detail::swizzle<4,T,P,3,1,1,3> E3 ## E1 ## E1 ## E3; }; \
+00796         struct { glm::detail::swizzle<4,T,P,3,1,2,0> E3 ## E1 ## E2 ## E0; }; \
+00797         struct { glm::detail::swizzle<4,T,P,3,1,2,1> E3 ## E1 ## E2 ## E1; }; \
+00798         struct { glm::detail::swizzle<4,T,P,3,1,2,2> E3 ## E1 ## E2 ## E2; }; \
+00799         struct { glm::detail::swizzle<4,T,P,3,1,2,3> E3 ## E1 ## E2 ## E3; }; \
+00800         struct { glm::detail::swizzle<4,T,P,3,1,3,0> E3 ## E1 ## E3 ## E0; }; \
+00801         struct { glm::detail::swizzle<4,T,P,3,1,3,1> E3 ## E1 ## E3 ## E1; }; \
+00802         struct { glm::detail::swizzle<4,T,P,3,1,3,2> E3 ## E1 ## E3 ## E2; }; \
+00803         struct { glm::detail::swizzle<4,T,P,3,1,3,3> E3 ## E1 ## E3 ## E3; }; \
+00804         struct { glm::detail::swizzle<4,T,P,3,2,0,0> E3 ## E2 ## E0 ## E0; }; \
+00805         struct { glm::detail::swizzle<4,T,P,3,2,0,1> E3 ## E2 ## E0 ## E1; }; \
+00806         struct { glm::detail::swizzle<4,T,P,3,2,0,2> E3 ## E2 ## E0 ## E2; }; \
+00807         struct { glm::detail::swizzle<4,T,P,3,2,0,3> E3 ## E2 ## E0 ## E3; }; \
+00808         struct { glm::detail::swizzle<4,T,P,3,2,1,0> E3 ## E2 ## E1 ## E0; }; \
+00809         struct { glm::detail::swizzle<4,T,P,3,2,1,1> E3 ## E2 ## E1 ## E1; }; \
+00810         struct { glm::detail::swizzle<4,T,P,3,2,1,2> E3 ## E2 ## E1 ## E2; }; \
+00811         struct { glm::detail::swizzle<4,T,P,3,2,1,3> E3 ## E2 ## E1 ## E3; }; \
+00812         struct { glm::detail::swizzle<4,T,P,3,2,2,0> E3 ## E2 ## E2 ## E0; }; \
+00813         struct { glm::detail::swizzle<4,T,P,3,2,2,1> E3 ## E2 ## E2 ## E1; }; \
+00814         struct { glm::detail::swizzle<4,T,P,3,2,2,2> E3 ## E2 ## E2 ## E2; }; \
+00815         struct { glm::detail::swizzle<4,T,P,3,2,2,3> E3 ## E2 ## E2 ## E3; }; \
+00816         struct { glm::detail::swizzle<4,T,P,3,2,3,0> E3 ## E2 ## E3 ## E0; }; \
+00817         struct { glm::detail::swizzle<4,T,P,3,2,3,1> E3 ## E2 ## E3 ## E1; }; \
+00818         struct { glm::detail::swizzle<4,T,P,3,2,3,2> E3 ## E2 ## E3 ## E2; }; \
+00819         struct { glm::detail::swizzle<4,T,P,3,2,3,3> E3 ## E2 ## E3 ## E3; }; \
+00820         struct { glm::detail::swizzle<4,T,P,3,3,0,0> E3 ## E3 ## E0 ## E0; }; \
+00821         struct { glm::detail::swizzle<4,T,P,3,3,0,1> E3 ## E3 ## E0 ## E1; }; \
+00822         struct { glm::detail::swizzle<4,T,P,3,3,0,2> E3 ## E3 ## E0 ## E2; }; \
+00823         struct { glm::detail::swizzle<4,T,P,3,3,0,3> E3 ## E3 ## E0 ## E3; }; \
+00824         struct { glm::detail::swizzle<4,T,P,3,3,1,0> E3 ## E3 ## E1 ## E0; }; \
+00825         struct { glm::detail::swizzle<4,T,P,3,3,1,1> E3 ## E3 ## E1 ## E1; }; \
+00826         struct { glm::detail::swizzle<4,T,P,3,3,1,2> E3 ## E3 ## E1 ## E2; }; \
+00827         struct { glm::detail::swizzle<4,T,P,3,3,1,3> E3 ## E3 ## E1 ## E3; }; \
+00828         struct { glm::detail::swizzle<4,T,P,3,3,2,0> E3 ## E3 ## E2 ## E0; }; \
+00829         struct { glm::detail::swizzle<4,T,P,3,3,2,1> E3 ## E3 ## E2 ## E1; }; \
+00830         struct { glm::detail::swizzle<4,T,P,3,3,2,2> E3 ## E3 ## E2 ## E2; }; \
+00831         struct { glm::detail::swizzle<4,T,P,3,3,2,3> E3 ## E3 ## E2 ## E3; }; \
+00832         struct { glm::detail::swizzle<4,T,P,3,3,3,0> E3 ## E3 ## E3 ## E0; }; \
+00833         struct { glm::detail::swizzle<4,T,P,3,3,3,1> E3 ## E3 ## E3 ## E1; }; \
+00834         struct { glm::detail::swizzle<4,T,P,3,3,3,2> E3 ## E3 ## E3 ## E2; }; \
+00835         struct { glm::detail::swizzle<4,T,P,3,3,3,3> E3 ## E3 ## E3 ## E3; }; 
+00836 
+00837 #endif//glm_core_swizzle
+
+
+ + + diff --git a/doc/api-0.9.3/a00022.html b/doc/api-0.9.3/a00022.html new file mode 100644 index 00000000..b8b90aab --- /dev/null +++ b/doc/api-0.9.3/a00022.html @@ -0,0 +1,63 @@ + + + + +_swizzle_func.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

_swizzle_func.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2011-10-16 / 2011-10-16
+
Author:
Christophe Riccio
+ +

Definition in file _swizzle_func.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00022_source.html b/doc/api-0.9.3/a00022_source.html new file mode 100644 index 00000000..92bddb01 --- /dev/null +++ b/doc/api-0.9.3/a00022_source.html @@ -0,0 +1,833 @@ + + + + +_swizzle_func.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

_swizzle_func.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_swizzle_func
+00030 #define glm_core_swizzle_func
+00031 
+00032 #define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \
+00033         SWIZZLED_TYPE<TMPL_TYPE> A ## B() CONST \
+00034         { \
+00035                 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B); \
+00036         }
+00037 
+00038 #define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \
+00039         SWIZZLED_TYPE<TMPL_TYPE> A ## B ## C() CONST \
+00040         { \
+00041                 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C); \
+00042         }
+00043 
+00044 #define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \
+00045         SWIZZLED_TYPE<TMPL_TYPE> A ## B ## C ## D() CONST \
+00046         { \
+00047                 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C, this->D); \
+00048         }
+00049 
+00050 #define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \
+00051         template <typename TMPL_TYPE> \
+00052         SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE>::A ## B() CONST \
+00053         { \
+00054                 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B); \
+00055         }
+00056 
+00057 #define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \
+00058         template <typename TMPL_TYPE> \
+00059         SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE>::A ## B ## C() CONST \
+00060         { \
+00061                 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C); \
+00062         }
+00063 
+00064 #define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \
+00065         template <typename TMPL_TYPE> \
+00066         SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE>::A ## B ## C ## D() CONST \
+00067         { \
+00068                 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C, this->D); \
+00069         }
+00070 
+00071 #define GLM_MUTABLE
+00072 
+00073 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+00074         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
+00075         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A)
+00076 
+00077 #define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \
+00078         GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \
+00079         GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \
+00080         GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t)
+00081 
+00082 //GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2)
+00083 
+00084 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+00085         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
+00086         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \
+00087         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \
+00088         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \
+00089         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \
+00090         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B)
+00091 
+00092 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+00093         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \
+00094         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \
+00095         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \
+00096         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \
+00097         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \
+00098         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A)
+00099 
+00100 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
+00101         GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
+00102         GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C)
+00103 
+00104 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \
+00105         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \
+00106         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \
+00107         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, q)
+00108 
+00109 //GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3)
+00110 
+00111 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+00112         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
+00113         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \
+00114         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \
+00115         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \
+00116         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \
+00117         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \
+00118         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \
+00119         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \
+00120         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \
+00121         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \
+00122         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \
+00123         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C)
+00124 
+00125 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+00126         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \
+00127         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \
+00128         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \
+00129         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \
+00130         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \
+00131         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \
+00132         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \
+00133         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \
+00134         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \
+00135         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \
+00136         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \
+00137         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \
+00138         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \
+00139         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \
+00140         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \
+00141         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \
+00142         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \
+00143         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \
+00144         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \
+00145         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \
+00146         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \
+00147         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \
+00148         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \
+00149         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B)
+00150 
+00151 #define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+00152         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \
+00153         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \
+00154         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \
+00155         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \
+00156         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \
+00157         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \
+00158         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \
+00159         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \
+00160         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \
+00161         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \
+00162         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \
+00163         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \
+00164         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \
+00165         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \
+00166         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \
+00167         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \
+00168         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \
+00169         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \
+00170         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \
+00171         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \
+00172         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \
+00173         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \
+00174         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \
+00175         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A)
+00176 
+00177 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \
+00178         GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \
+00179         GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \
+00180         GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)
+00181 
+00182 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+00183         GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \
+00184         GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \
+00185         GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, q, p)
+00186 
+00187 //GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4)
+00188 
+00189 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+00190         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
+00191         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
+00192         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
+00193         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B)
+00194 
+00195 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+00196         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
+00197         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
+00198         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
+00199         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
+00200         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
+00201         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
+00202         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
+00203         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B)
+00204 
+00205 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+00206         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
+00207         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
+00208         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
+00209         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
+00210         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
+00211         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
+00212         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
+00213         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
+00214         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
+00215         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
+00216         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
+00217         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
+00218         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
+00219         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
+00220         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
+00221         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B)
+00222 
+00223 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \
+00224         GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \
+00225         GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \
+00226         GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B)
+00227 
+00228 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+00229         GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \
+00230         GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \
+00231         GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t)
+00232 
+00233 //GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4)
+00234 
+00235 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+00236         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
+00237         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
+00238         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \
+00239         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
+00240         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \
+00241         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \
+00242         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \
+00243         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \
+00244         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C)
+00245 
+00246 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+00247         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
+00248         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
+00249         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \
+00250         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
+00251         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
+00252         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \
+00253         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \
+00254         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \
+00255         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \
+00256         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
+00257         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
+00258         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \
+00259         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
+00260         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \
+00261         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \
+00262         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \
+00263         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \
+00264         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \
+00265         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \
+00266         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \
+00267         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \
+00268         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \
+00269         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \
+00270         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \
+00271         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \
+00272         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \
+00273         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C)
+00274 
+00275 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+00276         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
+00277         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
+00278         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \
+00279         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
+00280         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
+00281         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \
+00282         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \
+00283         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \
+00284         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \
+00285         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
+00286         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
+00287         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \
+00288         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
+00289         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
+00290         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \
+00291         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \
+00292         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \
+00293         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \
+00294         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \
+00295         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \
+00296         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \
+00297         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \
+00298         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \
+00299         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \
+00300         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \
+00301         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \
+00302         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \
+00303         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \
+00304         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \
+00305         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \
+00306         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \
+00307         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \
+00308         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \
+00309         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \
+00310         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \
+00311         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \
+00312         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
+00313         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
+00314         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \
+00315         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
+00316         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
+00317         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \
+00318         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \
+00319         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \
+00320         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \
+00321         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
+00322         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
+00323         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \
+00324         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
+00325         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \
+00326         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \
+00327         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \
+00328         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \
+00329         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \
+00330         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \
+00331         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \
+00332         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \
+00333         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \
+00334         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \
+00335         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \
+00336         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \
+00337         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \
+00338         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \
+00339         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \
+00340         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \
+00341         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \
+00342         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \
+00343         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \
+00344         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \
+00345         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \
+00346         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \
+00347         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \
+00348         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \
+00349         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \
+00350         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \
+00351         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \
+00352         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \
+00353         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \
+00354         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \
+00355         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \
+00356         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \
+00357         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \
+00358         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \
+00359         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \
+00360         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \
+00361         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \
+00362         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \
+00363         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \
+00364         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \
+00365         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \
+00366         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \
+00367         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \
+00368         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \
+00369         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \
+00370         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \
+00371         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \
+00372         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \
+00373         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \
+00374         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \
+00375         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \
+00376         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \
+00377         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \
+00378         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \
+00379         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \
+00380         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \
+00381         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \
+00382         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \
+00383         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \
+00384         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \
+00385         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \
+00386         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \
+00387         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \
+00388         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \
+00389         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \
+00390         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \
+00391         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \
+00392         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \
+00393         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \
+00394         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \
+00395         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \
+00396         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \
+00397         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \
+00398         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \
+00399         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \
+00400         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \
+00401         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \
+00402         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \
+00403         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \
+00404         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \
+00405         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \
+00406         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \
+00407         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \
+00408         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \
+00409         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \
+00410         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \
+00411         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \
+00412         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \
+00413         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \
+00414         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \
+00415         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \
+00416         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \
+00417         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \
+00418         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \
+00419         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C)
+00420 
+00421 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \
+00422         GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \
+00423         GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
+00424         GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C)
+00425 
+00426 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+00427         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \
+00428         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \
+00429         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, q)
+00430 
+00431 //GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4)
+00432 
+00433 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+00434         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
+00435         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
+00436         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \
+00437         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \
+00438         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
+00439         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \
+00440         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \
+00441         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \
+00442         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \
+00443         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \
+00444         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \
+00445         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \
+00446         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \
+00447         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \
+00448         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \
+00449         GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D)
+00450 
+00451 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+00452         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
+00453         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
+00454         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \
+00455         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \
+00456         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
+00457         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
+00458         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \
+00459         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \
+00460         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \
+00461         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \
+00462         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \
+00463         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \
+00464         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \
+00465         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \
+00466         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \
+00467         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \
+00468         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
+00469         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
+00470         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \
+00471         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \
+00472         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
+00473         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \
+00474         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \
+00475         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \
+00476         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \
+00477         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \
+00478         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \
+00479         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \
+00480         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \
+00481         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \
+00482         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \
+00483         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \
+00484         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \
+00485         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \
+00486         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \
+00487         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \
+00488         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \
+00489         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \
+00490         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \
+00491         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \
+00492         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \
+00493         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \
+00494         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \
+00495         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \
+00496         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \
+00497         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \
+00498         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \
+00499         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \
+00500         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \
+00501         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \
+00502         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \
+00503         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \
+00504         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \
+00505         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \
+00506         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \
+00507         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \
+00508         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \
+00509         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \
+00510         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \
+00511         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \
+00512         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \
+00513         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \
+00514         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \
+00515         GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D)
+00516 
+00517 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+00518         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
+00519         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
+00520         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \
+00521         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \
+00522         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
+00523         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
+00524         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \
+00525         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \
+00526         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \
+00527         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \
+00528         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \
+00529         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \
+00530         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \
+00531         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \
+00532         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \
+00533         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \
+00534         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
+00535         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
+00536         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \
+00537         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \
+00538         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
+00539         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
+00540         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \
+00541         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \
+00542         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \
+00543         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \
+00544         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \
+00545         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \
+00546         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \
+00547         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \
+00548         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \
+00549         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \
+00550         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \
+00551         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \
+00552         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \
+00553         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \
+00554         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \
+00555         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \
+00556         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \
+00557         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \
+00558         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \
+00559         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \
+00560         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \
+00561         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \
+00562         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \
+00563         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \
+00564         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \
+00565         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \
+00566         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \
+00567         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \
+00568         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \
+00569         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \
+00570         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \
+00571         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \
+00572         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \
+00573         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \
+00574         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \
+00575         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \
+00576         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \
+00577         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \
+00578         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \
+00579         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \
+00580         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \
+00581         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \
+00582         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
+00583         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
+00584         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \
+00585         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \
+00586         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
+00587         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
+00588         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \
+00589         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \
+00590         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \
+00591         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \
+00592         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \
+00593         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \
+00594         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \
+00595         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \
+00596         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \
+00597         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \
+00598         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
+00599         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
+00600         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \
+00601         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \
+00602         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
+00603         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \
+00604         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \
+00605         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \
+00606         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \
+00607         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \
+00608         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \
+00609         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \
+00610         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \
+00611         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \
+00612         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \
+00613         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \
+00614         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \
+00615         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \
+00616         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \
+00617         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \
+00618         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \
+00619         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \
+00620         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \
+00621         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \
+00622         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \
+00623         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \
+00624         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \
+00625         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \
+00626         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \
+00627         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \
+00628         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \
+00629         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \
+00630         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \
+00631         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \
+00632         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \
+00633         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \
+00634         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \
+00635         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \
+00636         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \
+00637         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \
+00638         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \
+00639         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \
+00640         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \
+00641         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \
+00642         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \
+00643         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \
+00644         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \
+00645         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \
+00646         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \
+00647         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \
+00648         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \
+00649         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \
+00650         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \
+00651         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \
+00652         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \
+00653         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \
+00654         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \
+00655         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \
+00656         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \
+00657         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \
+00658         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \
+00659         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \
+00660         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \
+00661         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \
+00662         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \
+00663         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \
+00664         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \
+00665         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \
+00666         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \
+00667         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \
+00668         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \
+00669         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \
+00670         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \
+00671         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \
+00672         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \
+00673         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \
+00674         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \
+00675         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \
+00676         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \
+00677         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \
+00678         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \
+00679         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \
+00680         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \
+00681         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \
+00682         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \
+00683         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \
+00684         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \
+00685         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \
+00686         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \
+00687         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \
+00688         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \
+00689         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \
+00690         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \
+00691         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \
+00692         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \
+00693         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \
+00694         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \
+00695         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \
+00696         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \
+00697         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \
+00698         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \
+00699         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \
+00700         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \
+00701         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \
+00702         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \
+00703         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \
+00704         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \
+00705         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \
+00706         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \
+00707         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \
+00708         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \
+00709         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \
+00710         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \
+00711         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \
+00712         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \
+00713         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \
+00714         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \
+00715         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \
+00716         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \
+00717         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \
+00718         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \
+00719         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \
+00720         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \
+00721         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \
+00722         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \
+00723         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \
+00724         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \
+00725         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \
+00726         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \
+00727         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \
+00728         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \
+00729         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \
+00730         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \
+00731         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \
+00732         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \
+00733         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \
+00734         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \
+00735         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \
+00736         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \
+00737         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \
+00738         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \
+00739         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \
+00740         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \
+00741         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \
+00742         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \
+00743         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \
+00744         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \
+00745         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \
+00746         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \
+00747         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \
+00748         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \
+00749         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \
+00750         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \
+00751         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \
+00752         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \
+00753         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \
+00754         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \
+00755         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \
+00756         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \
+00757         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \
+00758         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \
+00759         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \
+00760         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \
+00761         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \
+00762         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \
+00763         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \
+00764         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \
+00765         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \
+00766         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \
+00767         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \
+00768         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \
+00769         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \
+00770         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \
+00771         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \
+00772         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \
+00773         GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D)
+00774 
+00775 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \
+00776         GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \
+00777         GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \
+00778         GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)
+00779 
+00780 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+00781         GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \
+00782         GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \
+00783         GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, q, p)
+00784 
+00785 //GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4)
+00786 
+00787 #endif//glm_core_swizzle_func
+
+
+ + + diff --git a/doc/api-0.9.3/a00023.html b/doc/api-0.9.3/a00023.html new file mode 100644 index 00000000..68da3a58 --- /dev/null +++ b/doc/api-0.9.3/a00023.html @@ -0,0 +1,63 @@ + + + + +_vectorize.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

_vectorize.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2011-10-14 / 2011-10-14
+
Author:
Christophe Riccio
+ +

Definition in file _vectorize.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00023_source.html b/doc/api-0.9.3/a00023_source.html new file mode 100644 index 00000000..d6deec36 --- /dev/null +++ b/doc/api-0.9.3/a00023_source.html @@ -0,0 +1,205 @@ + + + + +_vectorize.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

_vectorize.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #define VECTORIZE2_VEC(func) \
+00030     template <typename T> \
+00031     GLM_FUNC_QUALIFIER detail::tvec2<T> func( \
+00032                 detail::tvec2<T> const & v) \
+00033     { \
+00034         return detail::tvec2<T>( \
+00035             func(v.x), \
+00036             func(v.y)); \
+00037     }
+00038 
+00039 #define VECTORIZE3_VEC(func) \
+00040     template <typename T> \
+00041     GLM_FUNC_QUALIFIER detail::tvec3<T> func( \
+00042                 detail::tvec3<T> const & v) \
+00043     { \
+00044         return detail::tvec3<T>( \
+00045             func(v.x), \
+00046             func(v.y), \
+00047             func(v.z)); \
+00048     }
+00049 
+00050 #define VECTORIZE4_VEC(func) \
+00051     template <typename T> \
+00052     GLM_FUNC_QUALIFIER detail::tvec4<T> func( \
+00053                 detail::tvec4<T> const & v) \
+00054     { \
+00055         return detail::tvec4<T>( \
+00056             func(v.x), \
+00057             func(v.y), \
+00058             func(v.z), \
+00059             func(v.w)); \
+00060     }
+00061 
+00062 #define VECTORIZE_VEC(func) \
+00063         VECTORIZE2_VEC(func) \
+00064         VECTORIZE3_VEC(func) \
+00065         VECTORIZE4_VEC(func)
+00066 
+00067 #define VECTORIZE2_VEC_SCA(func) \
+00068     template <typename T> \
+00069     GLM_FUNC_QUALIFIER detail::tvec2<T> func \
+00070         ( \
+00071                 detail::tvec2<T> const & x,  \
+00072                 typename detail::tvec2<T>::value_type const & y \
+00073         ) \
+00074     { \
+00075         return detail::tvec2<T>( \
+00076             func(x.x, y), \
+00077             func(x.y, y)); \
+00078     }
+00079 
+00080 #define VECTORIZE3_VEC_SCA(func) \
+00081     template <typename T> \
+00082     GLM_FUNC_QUALIFIER detail::tvec3<T> func \
+00083         ( \
+00084                 detail::tvec3<T> const & x,  \
+00085                 typename detail::tvec3<T>::value_type const & y \
+00086         ) \
+00087     { \
+00088         return detail::tvec3<T>( \
+00089             func(x.x, y), \
+00090             func(x.y, y), \
+00091             func(x.z, y)); \
+00092     }
+00093 
+00094 #define VECTORIZE4_VEC_SCA(func) \
+00095     template <typename T> \
+00096     GLM_FUNC_QUALIFIER detail::tvec4<T> func \
+00097         ( \
+00098                 detail::tvec4<T> const & x,  \
+00099                 typename detail::tvec4<T>::value_type const & y \
+00100         ) \
+00101     { \
+00102         return detail::tvec4<T>( \
+00103             func(x.x, y), \
+00104             func(x.y, y), \
+00105             func(x.z, y), \
+00106             func(x.w, y)); \
+00107     }
+00108 
+00109 #define VECTORIZE_VEC_SCA(func) \
+00110         VECTORIZE2_VEC_SCA(func) \
+00111         VECTORIZE3_VEC_SCA(func) \
+00112         VECTORIZE4_VEC_SCA(func)
+00113 
+00114 #define VECTORIZE2_VEC_VEC(func) \
+00115     template <typename T> \
+00116     GLM_FUNC_QUALIFIER detail::tvec2<T> func \
+00117         ( \
+00118                 detail::tvec2<T> const & x,  \
+00119                 detail::tvec2<T> const & y \
+00120         ) \
+00121     { \
+00122         return detail::tvec2<T>( \
+00123             func(x.x, y.x), \
+00124             func(x.y, y.y)); \
+00125     }
+00126 
+00127 #define VECTORIZE3_VEC_VEC(func) \
+00128     template <typename T> \
+00129     GLM_FUNC_QUALIFIER detail::tvec3<T> func \
+00130         ( \
+00131                 detail::tvec3<T> const & x,  \
+00132                 detail::tvec3<T> const & y \
+00133         ) \
+00134     { \
+00135         return detail::tvec3<T>( \
+00136             func(x.x, y.x), \
+00137             func(x.y, y.y), \
+00138             func(x.z, y.z)); \
+00139     }
+00140 
+00141 #define VECTORIZE4_VEC_VEC(func) \
+00142     template <typename T> \
+00143     GLM_FUNC_QUALIFIER detail::tvec4<T> func \
+00144         ( \
+00145                 detail::tvec4<T> const & x,  \
+00146                 detail::tvec4<T> const & y \
+00147         ) \
+00148     { \
+00149         return detail::tvec4<T>( \
+00150             func(x.x, y.x), \
+00151             func(x.y, y.y), \
+00152             func(x.z, y.z), \
+00153             func(x.w, y.w)); \
+00154     }
+00155 
+00156 #define VECTORIZE_VEC_VEC(func) \
+00157         VECTORIZE2_VEC_VEC(func) \
+00158         VECTORIZE3_VEC_VEC(func) \
+00159         VECTORIZE4_VEC_VEC(func)
+
+
+ + + diff --git a/doc/api-0.9.3/a00024.html b/doc/api-0.9.3/a00024.html new file mode 100644 index 00000000..48b5606f --- /dev/null +++ b/doc/api-0.9.3/a00024.html @@ -0,0 +1,97 @@ + + + + +associated_min_max.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

associated_min_max.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

+template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
+template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
+template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
+template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
+template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
+template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_associated_min_max: Associated Min/Max

+
Date:
2008-03-10 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_associated_min_max: Associated Min/Max

+
Date:
2007-03-14 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+gtx_half_float (dependence)
+ +

Definition in file associated_min_max.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00024_source.html b/doc/api-0.9.3/a00024_source.html new file mode 100644 index 00000000..568a18cd --- /dev/null +++ b/doc/api-0.9.3/a00024_source.html @@ -0,0 +1,137 @@ + + + + +associated_min_max.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

associated_min_max.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_associated_min_max
+00039 #define GLM_GTX_associated_min_max GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_associated_min_max extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00054         template<typename genTypeT, typename genTypeU>
+00055         genTypeU associatedMin(
+00056                 const genTypeT& x, const genTypeU& a, 
+00057                 const genTypeT& y, const genTypeU& b);
+00058 
+00060         template<typename genTypeT, typename genTypeU>
+00061         genTypeU associatedMin(
+00062                 const genTypeT& x, const genTypeU& a, 
+00063                 const genTypeT& y, const genTypeU& b, 
+00064                 const genTypeT& z, const genTypeU& c);
+00065 
+00067         template<typename genTypeT, typename genTypeU>
+00068         genTypeU associatedMin(
+00069                 const genTypeT& x, const genTypeU& a, 
+00070                 const genTypeT& y, const genTypeU& b, 
+00071                 const genTypeT& z, const genTypeU& c, 
+00072                 const genTypeT& w, const genTypeU& d);
+00073 
+00075         template<typename genTypeT, typename genTypeU>
+00076         genTypeU associatedMax(
+00077                 const genTypeT& x, const genTypeU& a, 
+00078                 const genTypeT& y, const genTypeU& b);
+00079 
+00081         template<typename genTypeT, typename genTypeU>
+00082         genTypeU associatedMax(
+00083                 const genTypeT& x, const genTypeU& a, 
+00084                 const genTypeT& y, const genTypeU& b, 
+00085                 const genTypeT& z, const genTypeU& c);
+00086 
+00088         template<typename genTypeT, typename genTypeU>
+00089         genTypeU associatedMax(
+00090                 const genTypeT& x, const genTypeU& a, 
+00091                 const genTypeT& y, const genTypeU& b, 
+00092                 const genTypeT& z, const genTypeU& c, 
+00093                 const genTypeT& w, const genTypeU& d);
+00094 
+00096 } //namespace glm
+00097 
+00098 #include "associated_min_max.inl"
+00099 
+00100 #endif//GLM_GTX_associated_min_max
+
+
+ + + diff --git a/doc/api-0.9.3/a00025.html b/doc/api-0.9.3/a00025.html new file mode 100644 index 00000000..63cd81a5 --- /dev/null +++ b/doc/api-0.9.3/a00025.html @@ -0,0 +1,105 @@ + + + + +bit.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

bit.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
genType bitRevert (genType const &value)
template<typename genType >
genType bitRotateLeft (genType const &In, std::size_t Shift)
template<typename genType >
genType bitRotateRight (genType const &In, std::size_t Shift)
template<typename genIUType , typename sizeType >
genIUType extractField (genIUType const &v, sizeType const &first, sizeType const &count)
template<typename genIUType >
genIUType fillBitfieldWithOne (genIUType const &Value, int const &FromBit, int const &ToBit)
template<typename genIUType >
genIUType fillBitfieldWithZero (genIUType const &Value, int const &FromBit, int const &ToBit)
template<typename genType >
int highestBit (genType const &value)
template<typename genType >
genType highestBitValue (genType const &value)
template<typename genType >
bool isPowerOfTwo (genType const &value)
template<typename genType >
int lowestBit (genType const &value)
template<typename genIType >
genIType mask (genIType const &count)
template<typename genType >
genType powerOfTwoAbove (genType const &value)
template<typename genType >
genType powerOfTwoBelow (genType const &value)
template<typename genType >
genType powerOfTwoNearest (genType const &value)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_bit: Extended bitwise operations

+
Date:
2007-03-14 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_bit: Extended bitwise operations

+
Date:
2005-12-30 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file bit.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00025_source.html b/doc/api-0.9.3/a00025_source.html new file mode 100644 index 00000000..ed926928 --- /dev/null +++ b/doc/api-0.9.3/a00025_source.html @@ -0,0 +1,154 @@ + + + + +bit.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

bit.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_bit
+00040 #define GLM_GTX_bit GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/half_float.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_bit extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename genIType>
+00058         genIType mask(genIType const & count);
+00059 
+00063         template <typename genIUType, typename sizeType>
+00064         genIUType extractField(
+00065                 genIUType const & v, 
+00066                 sizeType const & first, 
+00067                 sizeType const & count);
+00068 
+00071         template <typename genType> 
+00072         int lowestBit(genType const & value);
+00073 
+00076         template <typename genType> 
+00077         int highestBit(genType const & value);
+00078 
+00081         template <typename genType> 
+00082         genType highestBitValue(genType const & value);
+00083 
+00086         template <typename genType> 
+00087         bool isPowerOfTwo(genType const & value);
+00088 
+00091         template <typename genType> 
+00092         genType powerOfTwoAbove(genType const & value);
+00093 
+00096         template <typename genType> 
+00097         genType powerOfTwoBelow(genType const & value);
+00098 
+00101         template <typename genType> 
+00102         genType powerOfTwoNearest(genType const & value);
+00103 
+00106         template <typename genType> 
+00107         genType bitRevert(genType const & value);
+00108 
+00111         template <typename genType>
+00112         genType bitRotateRight(genType const & In, std::size_t Shift);
+00113 
+00116         template <typename genType>
+00117         genType bitRotateLeft(genType const & In, std::size_t Shift);
+00118 
+00121         template <typename genIUType>
+00122         genIUType fillBitfieldWithOne(
+00123                 genIUType const & Value,
+00124                 int const & FromBit, 
+00125                 int const & ToBit);
+00126 
+00129         template <typename genIUType>
+00130         genIUType fillBitfieldWithZero(
+00131                 genIUType const & Value,
+00132                 int const & FromBit, 
+00133                 int const & ToBit);
+00134 
+00136 } //namespace glm
+00137 
+00138 #include "bit.inl"
+00139 
+00140 #endif//GLM_GTX_bit
+
+
+ + + diff --git a/doc/api-0.9.3/a00026_source.html b/doc/api-0.9.3/a00026_source.html new file mode 100644 index 00000000..b2bc2eb9 --- /dev/null +++ b/doc/api-0.9.3/a00026_source.html @@ -0,0 +1,107 @@ + + + + +closest_point.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

closest_point.hpp

+
+
+
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_closest_point
+00039 #define GLM_GTX_closest_point GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_closest_point extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename T> 
+00056         detail::tvec3<T> closestPointOnLine(
+00057                 detail::tvec3<T> const & point, 
+00058                 detail::tvec3<T> const & a, 
+00059                 detail::tvec3<T> const & b);
+00060 
+00062 }// namespace glm
+00063 
+00064 #include "closest_point.inl"
+00065 
+00066 #endif//GLM_GTX_closest_point
+
+
+ + + diff --git a/doc/api-0.9.3/a00027.html b/doc/api-0.9.3/a00027.html new file mode 100644 index 00000000..186c34e1 --- /dev/null +++ b/doc/api-0.9.3/a00027.html @@ -0,0 +1,203 @@ + + + + +color_cast.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

color_cast.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T >
f16vec4 f16_abgr_cast (T c)
+template<typename T >
f16vec4 f16_argb_cast (T c)
+template<typename T >
f16vec4 f16_bgra_cast (T c)
+template<typename T >
f16vec3 f16_bgrx_cast (T c)
+template<typename T >
f16 f16_channel_cast (T a)
+template<typename T >
f16vec4 f16_rgba_cast (T c)
+template<typename T >
f16vec3 f16_rgbx_cast (T c)
+template<typename T >
f16vec3 f16_xbgr_cast (T c)
+template<typename T >
f16vec3 f16_xrgb_cast (T c)
+template<typename T >
f32vec4 f32_abgr_cast (T c)
+template<typename T >
f32vec4 f32_argb_cast (T c)
+template<typename T >
f32vec4 f32_bgra_cast (T c)
+template<typename T >
f32vec3 f32_bgrx_cast (T c)
+template<typename T >
f32 f32_channel_cast (T a)
+template<typename T >
f32vec4 f32_rgba_cast (T c)
+template<typename T >
f32vec3 f32_rgbx_cast (T c)
+template<typename T >
f32vec3 f32_xbgr_cast (T c)
+template<typename T >
f32vec3 f32_xrgb_cast (T c)
+template<typename T >
f64vec4 f64_abgr_cast (T c)
+template<typename T >
f64vec4 f64_argb_cast (T c)
+template<typename T >
f64vec4 f64_bgra_cast (T c)
+template<typename T >
f64vec3 f64_bgrx_cast (T c)
+template<typename T >
f64 f64_channel_cast (T a)
+template<typename T >
f64vec4 f64_rgba_cast (T c)
+template<typename T >
f64vec3 f64_rgbx_cast (T c)
+template<typename T >
f64vec3 f64_xbgr_cast (T c)
+template<typename T >
f64vec3 f64_xrgb_cast (T c)
template<typename valType >
uint16 u16channel_cast (valType a)
+template<typename T >
uint32 u32_abgr_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_argb_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_bgra_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_bgrx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint32 u32_rgba_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_rgbx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint32 u32_xbgr_cast (const detail::tvec3< T > &c)
+template<typename T >
uint32 u32_xrgb_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_abgr_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_argb_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_bgra_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_bgrx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_rgba_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_rgbx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_xbgr_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_xrgb_cast (const detail::tvec3< T > &c)
template<typename valType >
uint8 u8channel_cast (valType a)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_color_cast: Color conversion

+
Date:
2007-06-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_number_precision: Number precision (dependence)
+ +

Definition in file color_cast.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00027_source.html b/doc/api-0.9.3/a00027_source.html new file mode 100644 index 00000000..124229f0 --- /dev/null +++ b/doc/api-0.9.3/a00027_source.html @@ -0,0 +1,163 @@ + + + + +color_cast.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

color_cast.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_color_cast
+00040 #define GLM_GTX_color_cast GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/number_precision.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_color_cast extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename valType> uint8 u8channel_cast(valType a);
+00058 
+00061         template <typename valType>     uint16 u16channel_cast(valType a);
+00062 
+00063         template <typename T> uint32 u32_rgbx_cast(const detail::tvec3<T>& c);          
+00064         template <typename T> uint32 u32_xrgb_cast(const detail::tvec3<T>& c);          
+00065         template <typename T> uint32 u32_bgrx_cast(const detail::tvec3<T>& c);          
+00066         template <typename T> uint32 u32_xbgr_cast(const detail::tvec3<T>& c);          
+00067 
+00068         template <typename T> uint32 u32_rgba_cast(const detail::tvec4<T>& c);          
+00069         template <typename T> uint32 u32_argb_cast(const detail::tvec4<T>& c);          
+00070         template <typename T> uint32 u32_bgra_cast(const detail::tvec4<T>& c);          
+00071         template <typename T> uint32 u32_abgr_cast(const detail::tvec4<T>& c);          
+00072 
+00073         template <typename T> uint64 u64_rgbx_cast(const detail::tvec3<T>& c);          
+00074         template <typename T> uint64 u64_xrgb_cast(const detail::tvec3<T>& c);          
+00075         template <typename T> uint64 u64_bgrx_cast(const detail::tvec3<T>& c);          
+00076         template <typename T> uint64 u64_xbgr_cast(const detail::tvec3<T>& c);          
+00077 
+00078         template <typename T> uint64 u64_rgba_cast(const detail::tvec4<T>& c);          
+00079         template <typename T> uint64 u64_argb_cast(const detail::tvec4<T>& c);          
+00080         template <typename T> uint64 u64_bgra_cast(const detail::tvec4<T>& c);          
+00081         template <typename T> uint64 u64_abgr_cast(const detail::tvec4<T>& c);          
+00082 
+00083         template <typename T> f16 f16_channel_cast(T a);        
+00084 
+00085         template <typename T> f16vec3 f16_rgbx_cast(T c);               
+00086         template <typename T> f16vec3 f16_xrgb_cast(T c);               
+00087         template <typename T> f16vec3 f16_bgrx_cast(T c);               
+00088         template <typename T> f16vec3 f16_xbgr_cast(T c);               
+00089 
+00090         template <typename T> f16vec4 f16_rgba_cast(T c);               
+00091         template <typename T> f16vec4 f16_argb_cast(T c);               
+00092         template <typename T> f16vec4 f16_bgra_cast(T c);               
+00093         template <typename T> f16vec4 f16_abgr_cast(T c);               
+00094 
+00095         template <typename T> f32 f32_channel_cast(T a);                
+00096 
+00097         template <typename T> f32vec3 f32_rgbx_cast(T c);               
+00098         template <typename T> f32vec3 f32_xrgb_cast(T c);               
+00099         template <typename T> f32vec3 f32_bgrx_cast(T c);               
+00100         template <typename T> f32vec3 f32_xbgr_cast(T c);               
+00101 
+00102         template <typename T> f32vec4 f32_rgba_cast(T c);               
+00103         template <typename T> f32vec4 f32_argb_cast(T c);               
+00104         template <typename T> f32vec4 f32_bgra_cast(T c);               
+00105         template <typename T> f32vec4 f32_abgr_cast(T c);               
+00106 
+00107         template <typename T> f64 f64_channel_cast(T a);                
+00108 
+00109         template <typename T> f64vec3 f64_rgbx_cast(T c);               
+00110         template <typename T> f64vec3 f64_xrgb_cast(T c);               
+00111         template <typename T> f64vec3 f64_bgrx_cast(T c);               
+00112         template <typename T> f64vec3 f64_xbgr_cast(T c);               
+00113 
+00114         template <typename T> f64vec4 f64_rgba_cast(T c);               
+00115         template <typename T> f64vec4 f64_argb_cast(T c);               
+00116         template <typename T> f64vec4 f64_bgra_cast(T c);               
+00117         template <typename T> f64vec4 f64_abgr_cast(T c);               
+00118 
+00120 }//namespace glm
+00121 
+00122 #include "color_cast.inl"
+00123 
+00124 #endif//GLM_GTX_color_cast
+
+
+ + + diff --git a/doc/api-0.9.3/a00028.html b/doc/api-0.9.3/a00028.html new file mode 100644 index 00000000..b4c7946f --- /dev/null +++ b/doc/api-0.9.3/a00028.html @@ -0,0 +1,80 @@ + + + + +color_space.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

color_space.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename valType >
detail::tvec3< valType > hsvColor (detail::tvec3< valType > const &rgbValue)
template<typename valType >
valType luminosity (detail::tvec3< valType > const &color)
template<typename valType >
detail::tvec3< valType > rgbColor (detail::tvec3< valType > const &hsvValue)
template<typename valType >
detail::tvec3< valType > saturation (valType const s, detail::tvec3< valType > const &color)
template<typename valType >
detail::tmat4x4< valType > saturation (valType const s)
template<typename valType >
detail::tvec4< valType > saturation (valType const s, detail::tvec4< valType > const &color)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_color_space: RGB to HSV conversion

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file color_space.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00028_source.html b/doc/api-0.9.3/a00028_source.html new file mode 100644 index 00000000..07a29e6b --- /dev/null +++ b/doc/api-0.9.3/a00028_source.html @@ -0,0 +1,127 @@ + + + + +color_space.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

color_space.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_color_space
+00039 #define GLM_GTX_color_space GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_color_space extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055     template <typename valType> 
+00056         detail::tvec3<valType> rgbColor(
+00057                 detail::tvec3<valType> const & hsvValue);
+00058 
+00061     template <typename valType> 
+00062         detail::tvec3<valType> hsvColor(
+00063                 detail::tvec3<valType> const & rgbValue);
+00064                 
+00067     template <typename valType> 
+00068         detail::tmat4x4<valType> saturation(
+00069                 valType const s);
+00070 
+00073         template <typename valType> 
+00074         detail::tvec3<valType> saturation(
+00075                 valType const s, 
+00076                 detail::tvec3<valType> const & color);
+00077                 
+00080     template <typename valType> 
+00081         detail::tvec4<valType> saturation(
+00082                 valType const s, 
+00083                 detail::tvec4<valType> const & color);
+00084                 
+00087         template <typename valType> 
+00088         valType luminosity(
+00089                 detail::tvec3<valType> const & color);
+00090 
+00092 }//namespace glm
+00093 
+00094 #include "color_space.inl"
+00095 
+00096 #endif//GLM_GTX_color_space
+
+
+ + + diff --git a/doc/api-0.9.3/a00029.html b/doc/api-0.9.3/a00029.html new file mode 100644 index 00000000..f0bd715c --- /dev/null +++ b/doc/api-0.9.3/a00029.html @@ -0,0 +1,76 @@ + + + + +color_space_YCoCg.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

color_space_YCoCg.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename valType >
detail::tvec3< valType > rgb2YCoCg (detail::tvec3< valType > const &rgbColor)
template<typename valType >
detail::tvec3< valType > rgb2YCoCgR (detail::tvec3< valType > const &rgbColor)
template<typename valType >
detail::tvec3< valType > YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor)
template<typename valType >
detail::tvec3< valType > YCoCgR2rgb (detail::tvec3< valType > const &YCoCgColor)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_color_space_YCoCg: RGB to YCoCg conversion

+
Date:
2008-10-28 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file color_space_YCoCg.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00029_source.html b/doc/api-0.9.3/a00029_source.html new file mode 100644 index 00000000..eee04c8d --- /dev/null +++ b/doc/api-0.9.3/a00029_source.html @@ -0,0 +1,117 @@ + + + + +color_space_YCoCg.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

color_space_YCoCg.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef glm_gtx_color_space_YCoCg
+00039 #define glm_gtx_color_space_YCoCg GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename valType> 
+00056         detail::tvec3<valType> rgb2YCoCg(
+00057                 detail::tvec3<valType> const & rgbColor);
+00058 
+00061     template <typename valType> 
+00062         detail::tvec3<valType> YCoCg2rgb(
+00063                 detail::tvec3<valType> const & YCoCgColor);
+00064 
+00068         template <typename valType> 
+00069         detail::tvec3<valType> rgb2YCoCgR(
+00070                 detail::tvec3<valType> const & rgbColor);
+00071 
+00075     template <typename valType> 
+00076         detail::tvec3<valType> YCoCgR2rgb(
+00077                 detail::tvec3<valType> const & YCoCgColor);
+00078 
+00080 }//namespace glm
+00081 
+00082 #include "color_space_YCoCg.inl"
+00083 
+00084 #endif//glm_gtx_color_space_YCoCg
+
+
+ + + diff --git a/doc/api-0.9.3/a00030.html b/doc/api-0.9.3/a00030.html new file mode 100644 index 00000000..99de3fe6 --- /dev/null +++ b/doc/api-0.9.3/a00030.html @@ -0,0 +1,316 @@ + + + + +compatibility.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

compatibility.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef bool bool1
+typedef bool bool1x1
+typedef detail::tvec2< bool > bool2
+typedef detail::tmat2x2< bool > bool2x2
+typedef detail::tmat2x3< bool > bool2x3
+typedef detail::tmat2x4< bool > bool2x4
+typedef detail::tvec3< bool > bool3
+typedef detail::tmat3x2< bool > bool3x2
+typedef detail::tmat3x3< bool > bool3x3
+typedef detail::tmat3x4< bool > bool3x4
+typedef detail::tvec4< bool > bool4
+typedef detail::tmat4x2< bool > bool4x2
+typedef detail::tmat4x3< bool > bool4x3
+typedef detail::tmat4x4< bool > bool4x4
+typedef double double1
+typedef double double1x1
+typedef detail::tvec2< double > double2
+typedef detail::tmat2x2< double > double2x2
+typedef detail::tmat2x3< double > double2x3
+typedef detail::tmat2x4< double > double2x4
+typedef detail::tvec3< double > double3
+typedef detail::tmat3x2< double > double3x2
+typedef detail::tmat3x3< double > double3x3
+typedef detail::tmat3x4< double > double3x4
+typedef detail::tvec4< double > double4
+typedef detail::tmat4x2< double > double4x2
+typedef detail::tmat4x3< double > double4x3
+typedef detail::tmat4x4< double > double4x4
+typedef float float1
+typedef float float1x1
+typedef detail::tvec2< float > float2
+typedef detail::tmat2x2< float > float2x2
+typedef detail::tmat2x3< float > float2x3
+typedef detail::tmat2x4< float > float2x4
+typedef detail::tvec3< float > float3
+typedef detail::tmat3x2< float > float3x2
+typedef detail::tmat3x3< float > float3x3
+typedef detail::tmat3x4< float > float3x4
+typedef detail::tvec4< float > float4
+typedef detail::tmat4x2< float > float4x2
+typedef detail::tmat4x3< float > float4x3
+typedef detail::tmat4x4< float > float4x4
+typedef detail::thalf half1
+typedef detail::thalf half1x1
+typedef detail::tvec2
+< detail::thalf > 
half2
+typedef detail::tmat2x2
+< detail::thalf > 
half2x2
+typedef detail::tmat2x3
+< detail::thalf > 
half2x3
+typedef detail::tmat2x4
+< detail::thalf > 
half2x4
+typedef detail::tvec3
+< detail::thalf > 
half3
+typedef detail::tmat3x2
+< detail::thalf > 
half3x2
+typedef detail::tmat3x3
+< detail::thalf > 
half3x3
+typedef detail::tmat3x4
+< detail::thalf > 
half3x4
+typedef detail::tvec4
+< detail::thalf > 
half4
+typedef detail::tmat4x2
+< detail::thalf > 
half4x2
+typedef detail::tmat4x3
+< detail::thalf > 
half4x3
+typedef detail::tmat4x4
+< detail::thalf > 
half4x4
+typedef int int1
+typedef int int1x1
+typedef detail::tvec2< int > int2
+typedef detail::tmat2x2< int > int2x2
+typedef detail::tmat2x3< int > int2x3
+typedef detail::tmat2x4< int > int2x4
+typedef detail::tvec3< int > int3
+typedef detail::tmat3x2< int > int3x2
+typedef detail::tmat3x3< int > int3x3
+typedef detail::tmat3x4< int > int3x4
+typedef detail::tvec4< int > int4
+typedef detail::tmat4x2< int > int4x2
+typedef detail::tmat4x3< int > int4x3
+typedef detail::tmat4x4< int > int4x4

+Functions

+template<typename T >
GLM_FUNC_QUALIFIER T atan2 (T x, T y)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec2< T > 
atan2 (const detail::tvec2< T > &x, const detail::tvec2< T > &y)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
atan2 (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec4< T > 
atan2 (const detail::tvec4< T > &x, const detail::tvec4< T > &y)
+template<typename genType >
bool isfinite (genType const &x)
+template<typename valType >
detail::tvec2< bool > isfinite (const detail::tvec2< valType > &x)
+template<typename valType >
detail::tvec3< bool > isfinite (const detail::tvec3< valType > &x)
+template<typename valType >
detail::tvec4< bool > isfinite (const detail::tvec4< valType > &x)
+template<typename genType >
detail::tvec4< bool > isinf (const detail::tvec4< genType > &x)
template<typename genType >
genType::bool_type isinf (genType const &x)
+template<typename genType >
detail::tvec2< bool > isinf (const detail::tvec2< genType > &x)
+template<typename genType >
detail::tvec3< bool > isinf (const detail::tvec3< genType > &x)
template<typename genType >
genType::bool_type isnan (genType const &x)
+template<typename genType >
detail::tvec2< bool > isnan (const detail::tvec2< genType > &x)
+template<typename genType >
detail::tvec3< bool > isnan (const detail::tvec3< genType > &x)
+template<typename genType >
detail::tvec4< bool > isnan (const detail::tvec4< genType > &x)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec4< T > 
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, T a)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec2< T > 
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, const detail::tvec2< T > &a)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec2< T > 
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, T a)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, const detail::tvec3< T > &a)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, T a)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec4< T > 
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, const detail::tvec4< T > &a)
+template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec2< T > 
saturate (const detail::tvec2< T > &x)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
saturate (const detail::tvec3< T > &x)
+template<typename T >
GLM_FUNC_QUALIFIER T saturate (T x)
+template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec4< T > 
saturate (const detail::tvec4< T > &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_compatibility: Cg and HLSL compatibility

+
Date:
2007-01-24 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+ +

Definition in file compatibility.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00030_source.html b/doc/api-0.9.3/a00030_source.html new file mode 100644 index 00000000..4de46944 --- /dev/null +++ b/doc/api-0.9.3/a00030_source.html @@ -0,0 +1,223 @@ + + + + +compatibility.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

compatibility.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_compatibility
+00040 #define GLM_GTX_compatibility GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"  
+00044 #include "../gtc/half_float.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_compatibility extension included")
+00048 #endif
+00049 
+00050 #if(GLM_COMPILER & GLM_COMPILER_VC)
+00051 #include <cfloat>
+00052 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
+00053 #include <cmath>
+00054 #endif//GLM_COMPILER
+00055 
+00056 namespace glm
+00057 {
+00060 
+00061         template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);}                                                                                                                                                                    
+00062         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, T a){return mix(x, y, a);}                                                 
+00063         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, T a){return mix(x, y, a);}                                                 
+00064         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, T a){return mix(x, y, a);}                                                 
+00065         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, const detail::tvec2<T>& a){return mix(x, y, a);}   
+00066         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, const detail::tvec3<T>& a){return mix(x, y, a);}   
+00067         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, const detail::tvec4<T>& a){return mix(x, y, a);}   
+00068 
+00069         template <typename T> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));}                                                                                                          
+00070         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> saturate(const detail::tvec2<T>& x){return clamp(x, T(0), T(1));}                                     
+00071         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> saturate(const detail::tvec3<T>& x){return clamp(x, T(0), T(1));}                                     
+00072         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> saturate(const detail::tvec4<T>& x){return clamp(x, T(0), T(1));}                                     
+00073 
+00074         template <typename T> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);}                                                                                                                          
+00075         template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<T>& y){return atan(x, y);}       
+00076         template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return atan(x, y);}       
+00077         template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<T>& y){return atan(x, y);}       
+00078 
+00079         template <typename genType> bool isfinite(genType const & x);                                                                                   
+00080         template <typename valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x);                              
+00081         template <typename valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x);                              
+00082         template <typename valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x);                              
+00083 
+00084         template <typename genType> bool isinf(genType const & x);                                                                                                              
+00085         template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x);                                 
+00086         template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x);                                 
+00087         template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x);                                 
+00088 
+00089         template <typename genType> bool isnan(genType const & x);                                                                                                              
+00090         template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x);                                 
+00091         template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x);                                 
+00092         template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x);                                 
+00093 
+00094         typedef bool                                            bool1;                  
+00095         typedef detail::tvec2<bool>                     bool2;                  
+00096         typedef detail::tvec3<bool>                     bool3;                  
+00097         typedef detail::tvec4<bool>                     bool4;                  
+00098 
+00099         typedef bool                                            bool1x1;                
+00100         typedef detail::tmat2x2<bool>           bool2x2;                
+00101         typedef detail::tmat2x3<bool>           bool2x3;                
+00102         typedef detail::tmat2x4<bool>           bool2x4;                
+00103         typedef detail::tmat3x2<bool>           bool3x2;                
+00104         typedef detail::tmat3x3<bool>           bool3x3;                
+00105         typedef detail::tmat3x4<bool>           bool3x4;                
+00106         typedef detail::tmat4x2<bool>           bool4x2;                
+00107         typedef detail::tmat4x3<bool>           bool4x3;                
+00108         typedef detail::tmat4x4<bool>           bool4x4;                
+00109 
+00110         typedef int                                                     int1;                   
+00111         typedef detail::tvec2<int>                      int2;                   
+00112         typedef detail::tvec3<int>                      int3;                   
+00113         typedef detail::tvec4<int>                      int4;                   
+00114 
+00115         typedef int                                                     int1x1;                 
+00116         typedef detail::tmat2x2<int>            int2x2;                 
+00117         typedef detail::tmat2x3<int>            int2x3;                 
+00118         typedef detail::tmat2x4<int>            int2x4;                 
+00119         typedef detail::tmat3x2<int>            int3x2;                 
+00120         typedef detail::tmat3x3<int>            int3x3;                 
+00121         typedef detail::tmat3x4<int>            int3x4;                 
+00122         typedef detail::tmat4x2<int>            int4x2;                 
+00123         typedef detail::tmat4x3<int>            int4x3;                 
+00124         typedef detail::tmat4x4<int>            int4x4;                 
+00125 
+00126         typedef detail::thalf                                   half1;                  
+00127         typedef detail::tvec2<detail::thalf>    half2;                  
+00128         typedef detail::tvec3<detail::thalf>    half3;                  
+00129         typedef detail::tvec4<detail::thalf>    half4;                  
+00130 
+00131         typedef detail::thalf                                   half1x1;                
+00132         typedef detail::tmat2x2<detail::thalf>  half2x2;                
+00133         typedef detail::tmat2x3<detail::thalf>  half2x3;                
+00134         typedef detail::tmat2x4<detail::thalf>  half2x4;                
+00135         typedef detail::tmat3x2<detail::thalf>  half3x2;                
+00136         typedef detail::tmat3x3<detail::thalf>  half3x3;                
+00137         typedef detail::tmat3x4<detail::thalf>  half3x4;                
+00138         typedef detail::tmat4x2<detail::thalf>  half4x2;                
+00139         typedef detail::tmat4x3<detail::thalf>  half4x3;                
+00140         typedef detail::tmat4x4<detail::thalf>  half4x4;                
+00141 
+00142         typedef float                                           float1;                 
+00143         typedef detail::tvec2<float>            float2;                 
+00144         typedef detail::tvec3<float>            float3;                 
+00145         typedef detail::tvec4<float>            float4;                 
+00146 
+00147         typedef float                                           float1x1;               
+00148         typedef detail::tmat2x2<float>          float2x2;               
+00149         typedef detail::tmat2x3<float>          float2x3;               
+00150         typedef detail::tmat2x4<float>          float2x4;               
+00151         typedef detail::tmat3x2<float>          float3x2;               
+00152         typedef detail::tmat3x3<float>          float3x3;               
+00153         typedef detail::tmat3x4<float>          float3x4;               
+00154         typedef detail::tmat4x2<float>          float4x2;               
+00155         typedef detail::tmat4x3<float>          float4x3;               
+00156         typedef detail::tmat4x4<float>          float4x4;               
+00157 
+00158         typedef double                                          double1;                
+00159         typedef detail::tvec2<double>           double2;                
+00160         typedef detail::tvec3<double>           double3;                
+00161         typedef detail::tvec4<double>           double4;                
+00162 
+00163         typedef double                                          double1x1;              
+00164         typedef detail::tmat2x2<double>         double2x2;              
+00165         typedef detail::tmat2x3<double>         double2x3;              
+00166         typedef detail::tmat2x4<double>         double2x4;              
+00167         typedef detail::tmat3x2<double>         double3x2;              
+00168         typedef detail::tmat3x3<double>         double3x3;              
+00169         typedef detail::tmat3x4<double>         double3x4;              
+00170         typedef detail::tmat4x2<double>         double4x2;              
+00171         typedef detail::tmat4x3<double>         double4x3;              
+00172         typedef detail::tmat4x4<double>         double4x4;              
+00173 
+00175 }//namespace glm
+00176 
+00177 #include "compatibility.inl"
+00178     
+00179 #endif//GLM_GTX_compatibility
+00180 
+
+
+ + + diff --git a/doc/api-0.9.3/a00031.html b/doc/api-0.9.3/a00031.html new file mode 100644 index 00000000..a6a0f552 --- /dev/null +++ b/doc/api-0.9.3/a00031.html @@ -0,0 +1,76 @@ + + + + +component_wise.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

component_wise.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename genType >
genType::value_type compAdd (genType const &v)
template<typename genType >
genType::value_type compMax (genType const &v)
template<typename genType >
genType::value_type compMin (genType const &v)
template<typename genType >
genType::value_type compMul (genType const &v)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_component_wise: Component wise

+
Date:
2007-05-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file component_wise.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00031_source.html b/doc/api-0.9.3/a00031_source.html new file mode 100644 index 00000000..8831a611 --- /dev/null +++ b/doc/api-0.9.3/a00031_source.html @@ -0,0 +1,117 @@ + + + + +component_wise.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

component_wise.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_component_wise
+00039 #define GLM_GTX_component_wise GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_component_wise extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename genType> 
+00056         typename genType::value_type compAdd(
+00057                 genType const & v);
+00058 
+00061         template <typename genType> 
+00062         typename genType::value_type compMul(
+00063                 genType const & v);
+00064 
+00067         template <typename genType> 
+00068         typename genType::value_type compMin(
+00069                 genType const & v);
+00070 
+00073         template <typename genType> 
+00074         typename genType::value_type compMax(
+00075                 genType const & v);
+00076 
+00078 }//namespace glm
+00079 
+00080 #include "component_wise.inl"
+00081 
+00082 #endif//GLM_GTX_component_wise
+
+
+ + + diff --git a/doc/api-0.9.3/a00032.html b/doc/api-0.9.3/a00032.html new file mode 100644 index 00000000..a3954ec0 --- /dev/null +++ b/doc/api-0.9.3/a00032.html @@ -0,0 +1,66 @@ + + + + +constants.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

constants.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_constants: Provide build-in constants

+
Date:
2011-09-30 / 2011-09-30
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+ +

Definition in file constants.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00032_source.html b/doc/api-0.9.3/a00032_source.html new file mode 100644 index 00000000..1902b4bf --- /dev/null +++ b/doc/api-0.9.3/a00032_source.html @@ -0,0 +1,220 @@ + + + + +constants.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

constants.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_constants
+00040 #define GLM_GTX_constants GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/half_float.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_constants extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00055         template <typename T>
+00056         T pi();
+00057 
+00058         template <typename T>
+00059         GLM_FUNC_QUALIFIER T pi()
+00060         {
+00061                 return T(3.14159265358979323846264338327950288);
+00062         }
+00063 
+00064         template <typename T>
+00065         GLM_FUNC_QUALIFIER T root_pi()
+00066         {
+00067                 return T(1.772453850905516027);
+00068         }
+00069 
+00070         template <typename T>
+00071         GLM_FUNC_QUALIFIER T half_pi()
+00072         {
+00073                 return T(1.57079632679489661923132169163975144);
+00074         }
+00075 
+00076         template <typename T>
+00077         GLM_FUNC_QUALIFIER T quarter_pi()
+00078         {
+00079                 return T(0.785398163397448309615660845819875721);
+00080         }
+00081 
+00082         template <typename T>
+00083         GLM_FUNC_QUALIFIER T one_over_pi()
+00084         {
+00085                 return T(0.318309886183790671537767526745028724);
+00086         }
+00087 
+00088         template <typename T>
+00089         GLM_FUNC_QUALIFIER T two_over_pi()
+00090         {
+00091                 return T(0.636619772367581343075535053490057448);
+00092         }
+00093 
+00094         template <typename T>
+00095         GLM_FUNC_QUALIFIER T two_over_root_pi()
+00096         {
+00097                 return T(1.12837916709551257389615890312154517);
+00098         }
+00099 
+00100         template <typename T>
+00101         GLM_FUNC_QUALIFIER T one_over_root_two()
+00102         {
+00103                 return T(0.707106781186547524400844362104849039);
+00104         }
+00105 
+00106         template <typename T>
+00107         GLM_FUNC_QUALIFIER T root_half_pi()
+00108         {
+00109                 return T(1.253314137315500251);
+00110         }
+00111 
+00112         template <typename T>
+00113         GLM_FUNC_QUALIFIER T root_two_pi()
+00114         {
+00115                 return T(2.506628274631000502);
+00116         }
+00117 
+00118         template <typename T>
+00119         GLM_FUNC_QUALIFIER T root_ln_four()
+00120         {
+00121                 return T(1.17741002251547469);
+00122         }
+00123 
+00124         template <typename T>
+00125         GLM_FUNC_QUALIFIER T e()
+00126         {
+00127                 return T(2.71828182845904523536);
+00128         }
+00129 
+00130         template <typename T>
+00131         GLM_FUNC_QUALIFIER T euler()
+00132         {
+00133                 return T(0.577215664901532860606);
+00134         }
+00135 
+00136         template <typename T>
+00137         GLM_FUNC_QUALIFIER T root_two()
+00138         {
+00139                 return T(1.41421356237309504880168872420969808);
+00140         }
+00141 
+00142         template <typename T>
+00143         GLM_FUNC_QUALIFIER T ln_two()
+00144         {
+00145                 return T(0.693147180559945309417232121458176568);
+00146         }
+00147 
+00148         template <typename T>
+00149         GLM_FUNC_QUALIFIER T ln_ten()
+00150         {
+00151                 return T(2.30258509299404568401799145468436421);
+00152         }
+00153 
+00154         template <typename T>
+00155         GLM_FUNC_QUALIFIER T ln_ln_two()
+00156         {
+00157                 return T(-0.3665129205816643);
+00158         }
+00159 
+00160         template <typename T>
+00161         GLM_FUNC_QUALIFIER T third()
+00162         {
+00163                 return T(0.333333333333333333);
+00164         }
+00165 
+00166         template <typename T>
+00167         GLM_FUNC_QUALIFIER T twothirds()
+00168         {
+00169                 return T(0.666666666666666666);
+00170         }
+00171 
+00173 } //namespace glm
+00174 
+00175 #include "constants.inl"
+00176 
+00177 #endif//GLM_GTX_constants
+
+
+ + + diff --git a/doc/api-0.9.3/a00033.html b/doc/api-0.9.3/a00033.html new file mode 100644 index 00000000..106c99d4 --- /dev/null +++ b/doc/api-0.9.3/a00033.html @@ -0,0 +1,76 @@ + + + + +epsilon.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

epsilon.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genTypeT , typename genTypeU >
bool equalEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
template<typename genTypeT , typename genTypeU >
bool notEqualEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_epsilon: Epsilon comparison

+
Date:
2007-05-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+
+GLM_GTC_quaternion: Quaternion types and functions (dependence)
+ +

Definition in file epsilon.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00033_source.html b/doc/api-0.9.3/a00033_source.html new file mode 100644 index 00000000..c2fb2a16 --- /dev/null +++ b/doc/api-0.9.3/a00033_source.html @@ -0,0 +1,117 @@ + + + + +epsilon.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

epsilon.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 #ifndef GLM_GTX_epsilon
+00041 #define GLM_GTX_epsilon GLM_VERSION
+00042 
+00043 // Dependency:
+00044 #include "../glm.hpp"
+00045 #include "../gtc/half_float.hpp"
+00046 #include "../gtc/quaternion.hpp"
+00047 
+00048 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00049 #       pragma message("GLM: GLM_GTX_epsilon extension included")
+00050 #endif
+00051 
+00052 namespace glm
+00053 {
+00056 
+00059         template <typename genTypeT, typename genTypeU> 
+00060         bool equalEpsilon(
+00061                 genTypeT const & x, 
+00062                 genTypeT const & y, 
+00063                 genTypeU const & epsilon);
+00064                 
+00067         template <typename genTypeT, typename genTypeU>
+00068         bool notEqualEpsilon(
+00069                 genTypeT const & x, 
+00070                 genTypeT const & y, 
+00071                 genTypeU const & epsilon);
+00072 
+00074 }//namespace glm
+00075 
+00076 #include "epsilon.inl"
+00077 
+00078 #endif//GLM_GTX_epsilon
+
+
+ + + diff --git a/doc/api-0.9.3/a00034.html b/doc/api-0.9.3/a00034.html new file mode 100644 index 00000000..5e1cfed4 --- /dev/null +++ b/doc/api-0.9.3/a00034.html @@ -0,0 +1,100 @@ + + + + +euler_angles.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

euler_angles.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename valType >
detail::tmat4x4< valType > eulerAngleX (valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleXY (valType const &angleX, valType const &angleY)
template<typename valType >
detail::tmat4x4< valType > eulerAngleXZ (valType const &angleX, valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleY (valType const &angleY)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYX (valType const &angleY, valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYZ (valType const &angleY, valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZ (valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZX (valType const &angleZ, valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZY (valType const &angleZ, valType const &angleY)
template<typename T >
detail::tmat2x2< T > orientate2 (T const &angle)
template<typename T >
detail::tmat3x3< T > orientate3 (detail::tvec3< T > const &angles)
template<typename T >
detail::tmat3x3< T > orientate3 (T const &angle)
template<typename T >
detail::tmat4x4< T > orientate4 (detail::tvec3< T > const &angles)
template<typename valType >
detail::tmat4x4< valType > yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_euler_angles: Matrix from euler angles

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+ +

Definition in file euler_angles.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00034_source.html b/doc/api-0.9.3/a00034_source.html new file mode 100644 index 00000000..a7f4f66b --- /dev/null +++ b/doc/api-0.9.3/a00034_source.html @@ -0,0 +1,169 @@ + + + + +euler_angles.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

euler_angles.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_euler_angles
+00040 #define GLM_GTX_euler_angles GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/half_float.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_euler_angles extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename valType> 
+00058         detail::tmat4x4<valType> eulerAngleX(
+00059                 valType const & angleX);
+00060 
+00063         template <typename valType> 
+00064         detail::tmat4x4<valType> eulerAngleY(
+00065                 valType const & angleY);
+00066 
+00069         template <typename valType> 
+00070         detail::tmat4x4<valType> eulerAngleZ(
+00071                 valType const & angleZ);
+00072 
+00075         template <typename valType> 
+00076         detail::tmat4x4<valType> eulerAngleXY(
+00077                 valType const & angleX, 
+00078                 valType const & angleY);
+00079 
+00082         template <typename valType> 
+00083         detail::tmat4x4<valType> eulerAngleYX(
+00084                 valType const & angleY, 
+00085                 valType const & angleX);
+00086 
+00089         template <typename valType> 
+00090         detail::tmat4x4<valType> eulerAngleXZ(
+00091                 valType const & angleX, 
+00092                 valType const & angleZ);
+00093 
+00096         template <typename valType> 
+00097         detail::tmat4x4<valType> eulerAngleZX(
+00098                 valType const & angleZ, 
+00099                 valType const & angleX);
+00100 
+00103         template <typename valType> 
+00104         detail::tmat4x4<valType> eulerAngleYZ(
+00105                 valType const & angleY, 
+00106                 valType const & angleZ);
+00107 
+00110         template <typename valType> 
+00111         detail::tmat4x4<valType> eulerAngleZY(
+00112                 valType const & angleZ, 
+00113                 valType const & angleY);
+00114 
+00117         template <typename valType> 
+00118         detail::tmat4x4<valType> eulerAngleYXZ(
+00119                 valType const & yaw, 
+00120                 valType const & pitch, 
+00121                 valType const & roll);
+00122 
+00125         template <typename valType> 
+00126         detail::tmat4x4<valType> yawPitchRoll(
+00127                 valType const & yaw, 
+00128                 valType const & pitch, 
+00129                 valType const & roll);
+00130 
+00133         template <typename T> 
+00134         detail::tmat2x2<T> orientate2(T const & angle);
+00135 
+00138         template <typename T> 
+00139         detail::tmat3x3<T> orientate3(T const & angle);
+00140 
+00143         template <typename T> 
+00144         detail::tmat3x3<T> orientate3(detail::tvec3<T> const & angles);
+00145                 
+00148         template <typename T> 
+00149         detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles);
+00150 
+00152 }//namespace glm
+00153 
+00154 #include "euler_angles.inl"
+00155 
+00156 #endif//GLM_GTX_euler_angles
+
+
+ + + diff --git a/doc/api-0.9.3/a00035_source.html b/doc/api-0.9.3/a00035_source.html new file mode 100644 index 00000000..2868e9c3 --- /dev/null +++ b/doc/api-0.9.3/a00035_source.html @@ -0,0 +1,190 @@ + + + + +ext.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

ext.hpp

+
+
+
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 
+00043 
+00044 
+00045 
+00046 
+00047 
+00048 
+00049 
+00050 
+00051 
+00052 
+00053 
+00054 
+00055 
+00056 
+00057 
+00058 #ifndef glm_ext
+00059 #define glm_ext
+00060 
+00061 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED))
+00062 #       define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED
+00063 #       pragma message("GLM: All extensions included (not recommanded)")
+00064 #endif//GLM_MESSAGES
+00065 
+00066 #include "./gtc/half_float.hpp"
+00067 #include "./gtc/matrix_access.hpp"
+00068 #include "./gtc/matrix_integer.hpp"
+00069 #include "./gtc/matrix_inverse.hpp"
+00070 #include "./gtc/matrix_transform.hpp"
+00071 #include "./gtc/quaternion.hpp"
+00072 #include "./gtc/swizzle.hpp"
+00073 #include "./gtc/type_precision.hpp"
+00074 #include "./gtc/type_ptr.hpp"
+00075 
+00076 #include "./gtx/associated_min_max.hpp"
+00077 #include "./gtx/bit.hpp"
+00078 #include "./gtx/closest_point.hpp"
+00079 #include "./gtx/color_cast.hpp"
+00080 #include "./gtx/color_space.hpp"
+00081 #include "./gtx/color_space_YCoCg.hpp"
+00082 #include "./gtx/compatibility.hpp"
+00083 #include "./gtx/component_wise.hpp"
+00084 #include "./gtx/epsilon.hpp"
+00085 #include "./gtx/euler_angles.hpp"
+00086 #include "./gtx/extend.hpp"
+00087 #include "./gtx/extented_min_max.hpp"
+00088 #include "./gtx/fast_exponential.hpp"
+00089 #include "./gtx/fast_square_root.hpp"
+00090 #include "./gtx/fast_trigonometry.hpp"
+00091 #include "./gtx/gradient_paint.hpp"
+00092 #include "./gtx/handed_coordinate_space.hpp"
+00093 #include "./gtx/inertia.hpp"
+00094 #include "./gtx/int_10_10_10_2.hpp"
+00095 #include "./gtx/integer.hpp"
+00096 #include "./gtx/intersect.hpp"
+00097 #include "./gtx/log_base.hpp"
+00098 #include "./gtx/matrix_cross_product.hpp"
+00099 #include "./gtx/matrix_interpolation.hpp"
+00100 #include "./gtx/matrix_major_storage.hpp"
+00101 #include "./gtx/matrix_operation.hpp"
+00102 #include "./gtx/matrix_query.hpp"
+00103 #include "./gtx/mixed_product.hpp"
+00104 #include "./gtx/multiple.hpp"
+00105 #include "./gtx/noise.hpp"
+00106 #include "./gtx/norm.hpp"
+00107 #include "./gtx/normal.hpp"
+00108 #include "./gtx/normalize_dot.hpp"
+00109 #include "./gtx/number_precision.hpp"
+00110 #include "./gtx/ocl_type.hpp"
+00111 #include "./gtx/optimum_pow.hpp"
+00112 #include "./gtx/orthonormalize.hpp"
+00113 #include "./gtx/perpendicular.hpp"
+00114 #include "./gtx/polar_coordinates.hpp"
+00115 #include "./gtx/projection.hpp"
+00116 #include "./gtx/quaternion.hpp"
+00117 #include "./gtx/random.hpp"
+00118 #include "./gtx/raw_data.hpp"
+00119 #include "./gtx/reciprocal.hpp"
+00120 #include "./gtx/rotate_vector.hpp"
+00121 #include "./gtx/spline.hpp"
+00122 #include "./gtx/std_based_type.hpp"
+00123 #include "./gtx/string_cast.hpp"
+00124 #include "./gtx/transform.hpp"
+00125 #include "./gtx/transform2.hpp"
+00126 #include "./gtx/ulp.hpp"
+00127 #include "./gtx/vec1.hpp"
+00128 #include "./gtx/vector_access.hpp"
+00129 #include "./gtx/vector_angle.hpp"
+00130 #include "./gtx/vector_query.hpp"
+00131 #include "./gtx/verbose_operator.hpp"
+00132 #include "./gtx/wrap.hpp"
+00133 
+00134 #if(GLM_ARCH & GLM_ARCH_SSE2)
+00135 #       include "./gtx/simd_vec4.hpp"
+00136 #       include "./gtx/simd_mat4.hpp"
+00137 #endif
+00138 
+00139 #include "./virtrev/xstream.hpp"
+00140 
+00141 //const float goldenRatio = 1.618033988749894848f;
+00142 //const float pi = 3.141592653589793238f;
+00143 
+00144 #endif //glm_ext
+
+
+ + + diff --git a/doc/api-0.9.3/a00036.html b/doc/api-0.9.3/a00036.html new file mode 100644 index 00000000..06d462c1 --- /dev/null +++ b/doc/api-0.9.3/a00036.html @@ -0,0 +1,70 @@ + + + + +extend.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

extend.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

template<typename genType >
genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_extend: Position extending

+
Date:
2006-01-07 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file extend.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00036_source.html b/doc/api-0.9.3/a00036_source.html new file mode 100644 index 00000000..9bdb1cdb --- /dev/null +++ b/doc/api-0.9.3/a00036_source.html @@ -0,0 +1,107 @@ + + + + +extend.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

extend.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_extend
+00039 #define GLM_GTX_extend GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_extend extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename genType> 
+00056         genType extend(
+00057                 genType const & Origin, 
+00058                 genType const & Source, 
+00059                 typename genType::value_type const Length);
+00060 
+00062 }//namespace glm
+00063 
+00064 #include "extend.inl"
+00065 
+00066 #endif//GLM_GTX_extend
+
+
+ + + diff --git a/doc/api-0.9.3/a00037_source.html b/doc/api-0.9.3/a00037_source.html new file mode 100644 index 00000000..1a8912d4 --- /dev/null +++ b/doc/api-0.9.3/a00037_source.html @@ -0,0 +1,237 @@ + + + + +extented_min_max.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

extented_min_max.hpp

+
+
+
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_extented_min_max
+00040 #define GLM_GTX_extented_min_max GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/half_float.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_extented_min_max extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00055         //< Return the minimum component-wise values of 3 inputs 
+00056         //< From GLM_GTX_extented_min_max extension
+00057         template <typename T>
+00058         T min(
+00059                 T const & x, 
+00060                 T const & y, 
+00061                 T const & z);
+00062 
+00063         //< Return the minimum component-wise values of 3 inputs
+00064         //< From GLM_GTX_extented_min_max extension
+00065         template 
+00066         <
+00067                 typename T, 
+00068                 template <typename> class C
+00069         >
+00070         C<T> min(
+00071                 C<T> const & x, 
+00072                 typename C<T>::value_type const & y, 
+00073                 typename C<T>::value_type const & z);
+00074 
+00075         //< Return the minimum component-wise values of 3 inputs 
+00076         //< From GLM_GTX_extented_min_max extension
+00077         template 
+00078         <
+00079                 typename T, 
+00080                 template <typename> class C
+00081         >
+00082         C<T> min(
+00083                 C<T> const & x, 
+00084                 C<T> const & y, 
+00085                 C<T> const & z);
+00086 
+00087         //< Return the minimum component-wise values of 4 inputs 
+00088         //< From GLM_GTX_extented_min_max extension
+00089         template <typename T>
+00090         T min(
+00091                 T const & x, 
+00092                 T const & y, 
+00093                 T const & z, 
+00094                 T const & w);
+00095 
+00096         //< Return the minimum component-wise values of 4 inputs 
+00097         //< From GLM_GTX_extented_min_max extension
+00098         template 
+00099         <
+00100                 typename T, 
+00101                 template <typename> class C
+00102         >
+00103         C<T> min(
+00104                 C<T> const & x, 
+00105                 typename C<T>::value_type const & y, 
+00106                 typename C<T>::value_type const & z, 
+00107                 typename C<T>::value_type const & w);
+00108 
+00109         //< Return the minimum component-wise values of 4 inputs
+00110         //< From GLM_GTX_extented_min_max extension
+00111         template 
+00112         <
+00113                 typename T, 
+00114                 template <typename> class C
+00115         >
+00116         C<T> min(
+00117                 C<T> const & x, 
+00118                 C<T> const & y, 
+00119                 C<T> const & z,
+00120                 C<T> const & w);
+00121 
+00122         //< Return the maximum component-wise values of 3 inputs 
+00123         //< From GLM_GTX_extented_min_max extension
+00124         template <typename T>
+00125         T max(
+00126                 T const & x, 
+00127                 T const & y, 
+00128                 T const & z);
+00129 
+00130         //< Return the maximum component-wise values of 3 inputs
+00131         //< From GLM_GTX_extented_min_max extension
+00132         template 
+00133         <
+00134                 typename T, 
+00135                 template <typename> class C
+00136         >
+00137         C<T> max(
+00138                 C<T> const & x, 
+00139                 typename C<T>::value_type const & y, 
+00140                 typename C<T>::value_type const & z);
+00141 
+00142         //< Return the maximum component-wise values of 3 inputs 
+00143         //< From GLM_GTX_extented_min_max extension
+00144         template 
+00145         <
+00146                 typename T, 
+00147                 template <typename> class C
+00148         >
+00149         C<T> max(
+00150                 C<T> const & x, 
+00151                 C<T> const & y, 
+00152                 C<T> const & z);
+00153 
+00154         //< Return the maximum component-wise values of 4 inputs
+00155         //< From GLM_GTX_extented_min_max extension
+00156         template <typename T>
+00157         T max(
+00158                 T const & x, 
+00159                 T const & y, 
+00160                 T const & z, 
+00161                 T const & w);
+00162 
+00163         //< Return the maximum component-wise values of 4 inputs 
+00164         //< From GLM_GTX_extented_min_max extension
+00165         template 
+00166         <
+00167                 typename T, 
+00168                 template <typename> class C
+00169         >
+00170         C<T> max(
+00171                 C<T> const & x, 
+00172                 typename C<T>::value_type const & y, 
+00173                 typename C<T>::value_type const & z, 
+00174                 typename C<T>::value_type const & w);
+00175 
+00176         //< Return the maximum component-wise values of 4 inputs 
+00177         //< From GLM_GTX_extented_min_max extension
+00178         template 
+00179         <
+00180                 typename T, 
+00181                 template <typename> class C
+00182         >
+00183         C<T> max(
+00184                 C<T> const & x, 
+00185                 C<T> const & y, 
+00186                 C<T> const & z, 
+00187                 C<T> const & w);
+00188 
+00190 }//namespace glm
+00191 
+00192 #include "extented_min_max.inl"
+00193 
+00194 #endif//GLM_GTX_extented_min_max
+
+
+ + + diff --git a/doc/api-0.9.3/a00038.html b/doc/api-0.9.3/a00038.html new file mode 100644 index 00000000..717ccb28 --- /dev/null +++ b/doc/api-0.9.3/a00038.html @@ -0,0 +1,84 @@ + + + + +fast_exponential.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

fast_exponential.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Functions

template<typename T >
fastExp (const T &x)
template<typename T >
fastExp2 (const T &x)
template<typename T >
fastLn (const T &x)
template<typename T >
fastLog (const T &x)
template<typename T >
fastLog2 (const T &x)
template<typename genType >
genType fastPow (genType const &x, genType const &y)
template<typename genTypeT , typename genTypeU >
genTypeT fastPow (genTypeT const &x, genTypeU const &y)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_fast_exponential: Fast exponentiation functions

+
Date:
2006-01-09 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+gtx_half_float (dependence)
+ +

Definition in file fast_exponential.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00038_source.html b/doc/api-0.9.3/a00038_source.html new file mode 100644 index 00000000..d1dfd509 --- /dev/null +++ b/doc/api-0.9.3/a00038_source.html @@ -0,0 +1,128 @@ + + + + +fast_exponential.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

fast_exponential.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_fast_exponential
+00040 #define GLM_GTX_fast_exponential GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/half_float.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_fast_exponential extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename genType> 
+00058         genType fastPow(
+00059                 genType const & x, 
+00060                 genType const & y);
+00061 
+00064         template <typename genTypeT, typename genTypeU> 
+00065         genTypeT fastPow(
+00066                 genTypeT const & x, 
+00067                 genTypeU const & y);
+00068                 
+00071         template <typename T> 
+00072         T fastExp(const T& x);
+00073                 
+00076         template <typename T> 
+00077         T fastLog(const T& x);
+00078 
+00081         template <typename T> 
+00082         T fastExp2(const T& x);
+00083                 
+00086         template <typename T> 
+00087         T fastLog2(const T& x);
+00088 
+00091         template <typename T> 
+00092         T fastLn(const T& x);
+00093 
+00095 }//namespace glm
+00096 
+00097 #include "fast_exponential.inl"
+00098 
+00099 #endif//GLM_GTX_fast_exponential
+
+
+ + + diff --git a/doc/api-0.9.3/a00039.html b/doc/api-0.9.3/a00039.html new file mode 100644 index 00000000..7af3e032 --- /dev/null +++ b/doc/api-0.9.3/a00039.html @@ -0,0 +1,78 @@ + + + + +fast_square_root.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

fast_square_root.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + +

+Functions

template<typename genType >
genType::value_type fastDistance (genType const &x, genType const &y)
template<typename genType >
genType fastInverseSqrt (genType const &x)
template<typename genType >
genType::value_type fastLength (genType const &x)
template<typename genType >
genType fastNormalize (genType const &x)
template<typename genType >
genType fastSqrt (genType const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_fast_square_root: Fast square root functions

+
Date:
2006-01-04 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file fast_square_root.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00039_source.html b/doc/api-0.9.3/a00039_source.html new file mode 100644 index 00000000..8b754747 --- /dev/null +++ b/doc/api-0.9.3/a00039_source.html @@ -0,0 +1,118 @@ + + + + +fast_square_root.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

fast_square_root.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 #ifndef GLM_GTX_fast_square_root
+00041 #define GLM_GTX_fast_square_root GLM_VERSION
+00042 
+00043 // Dependency:
+00044 #include "../glm.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_fast_square_root extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename genType> 
+00058         genType fastSqrt(genType const & x);
+00059 
+00062         template <typename genType> 
+00063         genType fastInverseSqrt(genType const & x);
+00064                 
+00067         template <typename genType> 
+00068         typename genType::value_type fastLength(genType const & x);
+00069 
+00072         template <typename genType> 
+00073         typename genType::value_type fastDistance(genType const & x, genType const & y);
+00074 
+00077         template <typename genType> 
+00078         genType fastNormalize(genType const & x);
+00079 
+00081 }// namespace glm
+00082 
+00083 #include "fast_square_root.inl"
+00084 
+00085 #endif//GLM_GTX_fast_square_root
+
+
+ + + diff --git a/doc/api-0.9.2/a00183.html b/doc/api-0.9.3/a00040.html similarity index 51% rename from doc/api-0.9.2/a00183.html rename to doc/api-0.9.3/a00040.html index 46527296..149047c5 100644 --- a/doc/api-0.9.2/a00183.html +++ b/doc/api-0.9.3/a00040.html @@ -2,18 +2,18 @@ -glm::gtx::fast_trigonometry Namespace Reference +fast_trigonometry.hpp File Reference - +
@@ -45,35 +37,46 @@
-
glm::gtx::fast_trigonometry Namespace Reference
+

fast_trigonometry.hpp File Reference

-

< GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions. -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- + - + - + - + - + - + - +

Functions

template<typename T >
fastAcos (const T &angle)
fastAcos (const T &angle)
template<typename T >
fastAsin (const T &angle)
fastAsin (const T &angle)
template<typename T >
fastAtan (const T &angle)
fastAtan (const T &angle)
template<typename T >
fastAtan (const T &y, const T &x)
fastAtan (const T &y, const T &x)
template<typename T >
fastCos (const T &angle)
fastCos (const T &angle)
template<typename T >
fastSin (const T &angle)
fastSin (const T &angle)
template<typename T >
fastTan (const T &angle)
fastTan (const T &angle)
-

Detailed Description

-

< GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_fast_trigonometry: Fast trigonometric functions

+
Date:
2006-01-08 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file fast_trigonometry.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00040_source.html b/doc/api-0.9.3/a00040_source.html new file mode 100644 index 00000000..cdc85ea2 --- /dev/null +++ b/doc/api-0.9.3/a00040_source.html @@ -0,0 +1,122 @@ + + + + +fast_trigonometry.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

fast_trigonometry.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_fast_trigonometry
+00039 #define GLM_GTX_fast_trigonometry GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00056     template <typename T> 
+00057         T fastSin(const T& angle);
+00058 
+00062         template <typename T> 
+00063         T fastCos(const T& angle);
+00064 
+00068         template <typename T> 
+00069         T fastTan(const T& angle);
+00070 
+00074         template <typename T> 
+00075         T fastAsin(const T& angle);
+00076 
+00080     template <typename T> 
+00081         T fastAcos(const T& angle);
+00082 
+00086         template <typename T> 
+00087         T fastAtan(const T& y, const T& x);
+00088 
+00092     template <typename T> 
+00093         T fastAtan(const T& angle);
+00094 
+00096 }//namespace glm
+00097 
+00098 #include "fast_trigonometry.inl"
+00099 
+00100 #endif//GLM_GTX_fast_trigonometry
+
+
+ + + diff --git a/doc/api-0.9.3/a00041.html b/doc/api-0.9.3/a00041.html new file mode 100644 index 00000000..85842a85 --- /dev/null +++ b/doc/api-0.9.3/a00041.html @@ -0,0 +1,118 @@ + + + + +func_common.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

func_common.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
genType ceil (genType const &x)
template<typename genType >
genType clamp (genType const &x, genType const &minVal, genType const &maxVal)
template<typename genType , typename genIType >
genIType floatBitsToInt (genType const &value)
template<typename genType , typename genUType >
genUType floatBitsToUint (genType const &value)
template<typename genType >
genType floor (genType const &x)
template<typename genType >
genType fma (genType const &a, genType const &b, genType const &c)
template<typename genType >
genType fract (genType const &x)
template<typename genType , typename genIType >
genType frexp (genType const &x, genIType &exp)
template<typename genType , typename genIType >
genType intBitsToFloat (genIType const &value)
template<typename genType >
genType::bool_type isinf (genType const &x)
template<typename genType >
genType::bool_type isnan (genType const &x)
template<typename genType , typename genIType >
genType ldexp (genType const &x, genIType const &exp)
template<typename genType >
genType max (genType const &x, genType const &y)
template<typename genType >
genType min (genType const &x, genType const &y)
template<typename genTypeT , typename genTypeU >
genTypeT mix (genTypeT const &x, genTypeT const &y, genTypeU const &a)
template<typename genType >
genType mod (genType const &x, typename genType::value_type const &y)
template<typename genType >
genType mod (genType const &x, genType const &y)
template<typename genType >
genType modf (genType const &x, genType &i)
template<typename genType >
genType round (genType const &x)
template<typename genType >
genType roundEven (genType const &x)
template<typename genType >
genType sign (genType const &x)
template<typename genType >
genType smoothstep (genType const &edge0, genType const &edge1, genType const &x)
template<typename genType >
genType step (genType const &edge, genType const &x)
template<typename genType >
genType trunc (genType const &x)
template<typename genType , typename genUType >
genType uintBitsToFloat (genUType const &value)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-03-08 / 2010-01-26
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.10.6 specification, section 8.2
+ +

Definition in file func_common.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00041_source.html b/doc/api-0.9.3/a00041_source.html new file mode 100644 index 00000000..13bf18a5 --- /dev/null +++ b/doc/api-0.9.3/a00041_source.html @@ -0,0 +1,217 @@ + + + + +func_common.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_common.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 #ifndef GLM_CORE_func_common
+00037 #define GLM_CORE_func_common GLM_VERSION
+00038 
+00039 #include "_fixes.hpp"
+00040 
+00041 namespace glm
+00042 {
+00045 
+00052     template <typename genType> 
+00053         genType abs(genType const & x);
+00054 
+00061         template <typename genType> 
+00062         genType sign(genType const & x);
+00063 
+00070         template <typename genType> 
+00071         genType floor(genType const & x);
+00072 
+00080         template <typename genType> 
+00081         genType trunc(genType const & x);
+00082 
+00093         template <typename genType> 
+00094         genType round(genType const & x);
+00095 
+00105         template <typename genType> 
+00106         genType roundEven(genType const & x);
+00107 
+00115     template <typename genType> 
+00116         genType ceil(genType const & x);
+00117 
+00124     template <typename genType> 
+00125         genType fract(genType const & x);
+00126 
+00134     template <typename genType> 
+00135         genType mod(
+00136                 genType const & x, 
+00137                 genType const & y);
+00138 
+00146     template <typename genType> 
+00147         genType mod(
+00148                 genType const & x, 
+00149                 typename genType::value_type const & y);
+00150 
+00160         template <typename genType> 
+00161         genType modf(
+00162                 genType const & x, 
+00163                 genType & i);
+00164 
+00171         template <typename genType> 
+00172         genType min(
+00173                 genType const & x, 
+00174                 genType const & y);
+00175 
+00176         template <typename genType> 
+00177         genType min(
+00178                 genType const & x, 
+00179                 typename genType::value_type const & y);
+00180 
+00187         template <typename genType> 
+00188         genType max(
+00189                 genType const & x, 
+00190                 genType const & y);
+00191 
+00192         template <typename genType> 
+00193         genType max(
+00194                 genType const & x, 
+00195                 typename genType::value_type const & y);
+00196 
+00204         template <typename genType> 
+00205         genType clamp(
+00206                 genType const & x, 
+00207                 genType const & minVal, 
+00208                 genType const & maxVal); 
+00209 
+00210         template <typename genType> 
+00211         genType clamp(
+00212                 genType const & x, 
+00213                 typename genType::value_type const & minVal, 
+00214                 typename genType::value_type const & maxVal); 
+00215 
+00258         template <typename genTypeT, typename genTypeU> 
+00259         genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a);
+00260 
+00265         template <typename genType> 
+00266         genType step(
+00267                 genType const & edge, 
+00268                 genType const & x);
+00269 
+00270         template <typename genType> 
+00271         genType step(
+00272                 typename genType::value_type const & edge, 
+00273                 genType const & x);
+00274 
+00289         template <typename genType> 
+00290         genType smoothstep(
+00291                 genType const & edge0, 
+00292                 genType const & edge1, 
+00293                 genType const & x);
+00294 
+00295         template <typename genType> 
+00296         genType smoothstep(
+00297                 typename genType::value_type const & edge0, 
+00298                 typename genType::value_type const & edge1, 
+00299                 genType const & x);
+00300 
+00311         template <typename genType> 
+00312         typename genType::bool_type isnan(genType const & x);
+00313 
+00324         template <typename genType> 
+00325         typename genType::bool_type isinf(genType const & x);
+00326 
+00336         template <typename genType, typename genIType>
+00337         genIType floatBitsToInt(genType const & value);
+00338 
+00348         template <typename genType, typename genUType>
+00349         genUType floatBitsToUint(genType const & value);
+00350 
+00364         template <typename genType, typename genIType>
+00365         genType intBitsToFloat(genIType const & value);
+00366         
+00380     template <typename genType, typename genUType>
+00381     genType uintBitsToFloat(genUType const & value);
+00382         
+00389         template <typename genType>
+00390         genType fma(genType const & a, genType const & b, genType const & c);
+00391 
+00406         template <typename genType, typename genIType>
+00407         genType frexp(genType const & x, genIType & exp);
+00408 
+00420         template <typename genType, typename genIType>
+00421         genType ldexp(genType const & x, genIType const & exp);
+00422 
+00424 }//namespace glm
+00425 
+00426 #include "func_common.inl"
+00427 
+00428 #endif//GLM_CORE_func_common
+
+
+ + + diff --git a/doc/api-0.9.2/a00147.html b/doc/api-0.9.3/a00042.html similarity index 53% rename from doc/api-0.9.2/a00147.html rename to doc/api-0.9.3/a00042.html index 9ef2a52b..47b65b3a 100644 --- a/doc/api-0.9.2/a00147.html +++ b/doc/api-0.9.3/a00042.html @@ -2,18 +2,18 @@ -glm::core::function::exponential Namespace Reference +func_exponential.hpp File Reference - +
@@ -46,35 +37,46 @@
-
glm::core::function::exponential Namespace Reference
+

func_exponential.hpp File Reference

-

Define all exponential functions from Section 8.2 of GLSL 1.30.8 specification. Included in glm namespace. -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- + - + - + - + - + - + - +

Functions

template<typename genType >
genType exp (genType const &x)
genType exp (genType const &x)
template<typename genType >
genType exp2 (genType const &x)
genType exp2 (genType const &x)
template<typename genType >
genType inversesqrt (genType const &x)
genType inversesqrt (genType const &x)
template<typename genType >
genType log (genType const &x)
genType log (genType const &x)
template<typename genType >
genType log2 (genType const &x)
genType log2 (genType const &x)
template<typename genType >
genType pow (genType const &x, genType const &y)
genType pow (genType const &x, genType const &y)
template<typename genType >
genType sqrt (genType const &x)
genType sqrt (genType const &x)
-

Detailed Description

-

Define all exponential functions from Section 8.2 of GLSL 1.30.8 specification. Included in glm namespace.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-08 / 2011-06-14
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.20.8 specification, section 8.2
+ +

Definition in file func_exponential.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00042_source.html b/doc/api-0.9.3/a00042_source.html new file mode 100644 index 00000000..eaf73193 --- /dev/null +++ b/doc/api-0.9.3/a00042_source.html @@ -0,0 +1,113 @@ + + + + +func_exponential.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_exponential.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 #ifndef glm_core_func_exponential
+00037 #define glm_core_func_exponential GLM_VERSION
+00038 
+00039 namespace glm
+00040 {
+00043 
+00052         template <typename genType> 
+00053         genType pow(genType const & x, genType const & y);
+00054 
+00062         template <typename genType> 
+00063         genType exp(genType const & x);
+00064 
+00074         template <typename genType> 
+00075         genType log(genType const & x);
+00076 
+00084         template <typename genType> 
+00085         genType exp2(genType const & x);
+00086 
+00095         template <typename genType> 
+00096         genType log2(genType const & x);
+00097 
+00105         template <typename genType> 
+00106         genType sqrt(genType const & x);
+00107     
+00115         template <typename genType> 
+00116         genType inversesqrt(genType const & x);
+00117 
+00119 }//namespace glm
+00120 
+00121 #include "func_exponential.inl"
+00122 
+00123 #endif//glm_core_func_exponential
+
+
+ + + diff --git a/doc/api-0.9.3/a00043.html b/doc/api-0.9.3/a00043.html new file mode 100644 index 00000000..9ca2c579 --- /dev/null +++ b/doc/api-0.9.3/a00043.html @@ -0,0 +1,84 @@ + + + + +func_geometric.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

func_geometric.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename valType >
detail::tvec3< valType > cross (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
template<typename genType >
genType::value_type distance (genType const &p0, genType const &p1)
template<typename genType >
genType::value_type dot (genType const &x, genType const &y)
template<typename genType >
genType faceforward (genType const &N, genType const &I, genType const &Nref)
template<typename genType >
genType::value_type length (genType const &x)
template<typename genType >
genType normalize (genType const &x)
template<typename genType >
genType reflect (genType const &I, genType const &N)
template<typename genType >
genType refract (genType const &I, genType const &N, typename genType::value_type const &eta)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-03 / 2011-06-14
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.20.8 specification, section 8.5
+ +

Definition in file func_geometric.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00043_source.html b/doc/api-0.9.3/a00043_source.html new file mode 100644 index 00000000..c1ef860a --- /dev/null +++ b/doc/api-0.9.3/a00043_source.html @@ -0,0 +1,132 @@ + + + + +func_geometric.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_geometric.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 #ifndef glm_core_func_geometric
+00037 #define glm_core_func_geometric GLM_VERSION
+00038 
+00039 namespace glm
+00040 {
+00043 
+00050         template <typename genType> 
+00051         typename genType::value_type length(
+00052                 genType const & x); 
+00053 
+00060         template <typename genType> 
+00061         typename genType::value_type distance(
+00062                 genType const & p0, 
+00063                 genType const & p1);
+00064 
+00071     template <typename genType> 
+00072         typename genType::value_type dot(
+00073                 genType const & x, 
+00074                 genType const & y);
+00075 
+00082     template <typename valType> 
+00083         detail::tvec3<valType> cross(
+00084                 detail::tvec3<valType> const & x, 
+00085                 detail::tvec3<valType> const & y);
+00086 
+00091         template <typename genType> 
+00092         genType normalize(
+00093                 genType const & x);
+00094 
+00101     template <typename genType> 
+00102         genType faceforward(
+00103                 genType const & N, 
+00104                 genType const & I, 
+00105                 genType const & Nref);
+00106   
+00114     template <typename genType> 
+00115         genType reflect(
+00116                 genType const & I, 
+00117                 genType const & N);
+00118   
+00127     template <typename genType> 
+00128         genType refract(
+00129                 genType const & I, 
+00130                 genType const & N, 
+00131                 typename genType::value_type const & eta);
+00132 
+00134 }//namespace glm
+00135 
+00136 #include "func_geometric.inl"
+00137 
+00138 #endif//glm_core_func_geometric
+
+
+ + + diff --git a/doc/api-0.9.3/a00044.html b/doc/api-0.9.3/a00044.html new file mode 100644 index 00000000..221dde87 --- /dev/null +++ b/doc/api-0.9.3/a00044.html @@ -0,0 +1,88 @@ + + + + +func_integer.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

func_integer.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , template< typename > class genIUType>
genIUType< T >::signed_type bitCount (genIUType< T > const &Value)
template<typename genIUType >
genIUType bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldReverse (genIUType const &value)
template<typename T , template< typename > class genIUType>
genIUType< T >::signed_type findLSB (genIUType< T > const &Value)
template<typename T , template< typename > class genIUType>
genIUType< T >::signed_type findMSB (genIUType< T > const &Value)
template<typename genIType >
void imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb)
template<typename genUType >
genUType uaddCarry (genUType const &x, genUType const &y, genUType &carry)
template<typename genUType >
void umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb)
template<typename genUType >
genUType usubBorrow (genUType const &x, genUType const &y, genUType &borrow)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2010-03-17 / 2011-06-18
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.20.8 specification, section 8.8
+ +

Definition in file func_integer.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00044_source.html b/doc/api-0.9.3/a00044_source.html new file mode 100644 index 00000000..328cc415 --- /dev/null +++ b/doc/api-0.9.3/a00044_source.html @@ -0,0 +1,146 @@ + + + + +func_integer.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_integer.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef glm_core_func_integer
+00039 #define glm_core_func_integer GLM_VERSION
+00040 
+00041 namespace glm
+00042 {
+00045 
+00054         template <typename genUType>
+00055         genUType uaddCarry(
+00056                 genUType const & x, 
+00057                 genUType const & y, 
+00058                 genUType & carry);
+00059 
+00068         template <typename genUType>
+00069         genUType usubBorrow(
+00070                 genUType const & x, 
+00071                 genUType const & y, 
+00072                 genUType & borrow);
+00073                 
+00082         template <typename genUType>
+00083         void umulExtended(
+00084                 genUType const & x, 
+00085                 genUType const & y, 
+00086                 genUType & msb, 
+00087                 genUType & lsb);
+00088                 
+00097         template <typename genIType>
+00098         void imulExtended(
+00099                 genIType const & x, 
+00100                 genIType const & y, 
+00101                 genIType & msb, 
+00102                 genIType & lsb);
+00103 
+00119         template <typename genIUType>
+00120         genIUType bitfieldExtract(
+00121                 genIUType const & Value, 
+00122                 int const & Offset, 
+00123                 int const & Bits);
+00124 
+00139         template <typename genIUType>
+00140         genIUType bitfieldInsert(
+00141                 genIUType const & Base, 
+00142                 genIUType const & Insert, 
+00143                 int const & Offset, 
+00144                 int const & Bits);
+00145 
+00154         template <typename genIUType>
+00155         genIUType bitfieldReverse(genIUType const & value);
+00156                 
+00165         template <typename T, template <typename> class genIUType>
+00166         typename genIUType<T>::signed_type bitCount(genIUType<T> const & Value);
+00167 
+00178         template <typename T, template <typename> class genIUType>
+00179         typename genIUType<T>::signed_type findLSB(genIUType<T> const & Value);
+00180 
+00192         template <typename T, template <typename> class genIUType>
+00193         typename genIUType<T>::signed_type findMSB(genIUType<T> const & Value);
+00194 
+00196 }//namespace glm
+00197 
+00198 #include "func_integer.inl"
+00199 
+00200 #endif//glm_core_func_integer
+00201 
+
+
+ + + diff --git a/doc/api-0.9.3/a00045.html b/doc/api-0.9.3/a00045.html new file mode 100644 index 00000000..18e871ca --- /dev/null +++ b/doc/api-0.9.3/a00045.html @@ -0,0 +1,89 @@ + + + + +func_matrix.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

func_matrix.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename valType >
detail::tmat2x2< valType >
+::value_type 
determinant (detail::tmat2x2< valType > const &m)
template<typename valType >
detail::tmat3x3< valType >
+::value_type 
determinant (detail::tmat3x3< valType > const &m)
template<typename valType >
detail::tmat4x4< valType >
+::value_type 
determinant (detail::tmat4x4< valType > const &m)
template<typename valType >
detail::tmat4x4< valType > inverse (detail::tmat4x4< valType > const &m)
template<typename valType >
detail::tmat3x3< valType > inverse (detail::tmat3x3< valType > const &m)
template<typename valType >
detail::tmat2x2< valType > inverse (detail::tmat2x2< valType > const &m)
template<typename matType >
matType matrixCompMult (matType const &x, matType const &y)
template<typename vecType , typename matType >
matType outerProduct (vecType const &c, vecType const &r)
template<typename matType >
matType::transpose_type transpose (matType const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-03 / 2011-06-15
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.20.8 specification, section 8.6
+ +

Definition in file func_matrix.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00045_source.html b/doc/api-0.9.3/a00045_source.html new file mode 100644 index 00000000..4699a2b1 --- /dev/null +++ b/doc/api-0.9.3/a00045_source.html @@ -0,0 +1,134 @@ + + + + +func_matrix.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_matrix.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 #ifndef GLM_CORE_func_matrix
+00041 #define GLM_CORE_func_matrix GLM_VERSION
+00042 
+00043 namespace glm
+00044 {
+00047 
+00055         template <typename matType> 
+00056         matType matrixCompMult(
+00057                 matType const & x, 
+00058                 matType const & y);
+00059 
+00070     template <typename vecType, typename matType> 
+00071         matType outerProduct(
+00072                 vecType const & c, 
+00073                 vecType const & r);
+00074 
+00081     template <typename matType> 
+00082         typename matType::transpose_type transpose(
+00083                 matType const & x);
+00084         
+00091         template <typename valType> 
+00092         typename detail::tmat2x2<valType>::value_type determinant(
+00093                 detail::tmat2x2<valType> const & m);
+00094 
+00101         template <typename valType> 
+00102         typename detail::tmat3x3<valType>::value_type determinant(
+00103                 detail::tmat3x3<valType> const & m);
+00104 
+00111     template <typename valType> 
+00112         typename detail::tmat4x4<valType>::value_type determinant(
+00113                 detail::tmat4x4<valType> const & m);
+00114 
+00121         template <typename valType> 
+00122         detail::tmat2x2<valType> inverse(
+00123                 detail::tmat2x2<valType> const & m);
+00124 
+00131         template <typename valType> 
+00132         detail::tmat3x3<valType> inverse(
+00133                 detail::tmat3x3<valType> const & m);
+00134 
+00141         template <typename valType> 
+00142         detail::tmat4x4<valType> inverse(
+00143                 detail::tmat4x4<valType> const & m);
+00144 
+00146 }//namespace glm
+00147 
+00148 #include "func_matrix.inl"
+00149 
+00150 #endif//GLM_CORE_func_matrix
+
+
+ + + diff --git a/doc/api-0.9.3/a00046.html b/doc/api-0.9.3/a00046.html new file mode 100644 index 00000000..2cef9978 --- /dev/null +++ b/doc/api-0.9.3/a00046.html @@ -0,0 +1,79 @@ + + + + +func_noise.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

func_noise.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename genType >
genType::value_type noise1 (genType const &x)
template<typename genType >
detail::tvec2< typename
+genType::value_type > 
noise2 (genType const &x)
template<typename genType >
detail::tvec3< typename
+genType::value_type > 
noise3 (genType const &x)
template<typename genType >
detail::tvec4< typename
+genType::value_type > 
noise4 (genType const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-01 / 2011-06-18
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.20.8 specification, section 8.13
+ +

Definition in file func_noise.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00046_source.html b/doc/api-0.9.3/a00046_source.html new file mode 100644 index 00000000..0b854142 --- /dev/null +++ b/doc/api-0.9.3/a00046_source.html @@ -0,0 +1,106 @@ + + + + +func_noise.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_noise.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef glm_core_func_noise
+00039 #define glm_core_func_noise GLM_VERSION
+00040 
+00041 namespace glm
+00042 {
+00045 
+00052         template <typename genType>
+00053         typename genType::value_type noise1(genType const & x);
+00054 
+00061         template <typename genType>
+00062         detail::tvec2<typename genType::value_type> noise2(genType const & x);
+00063 
+00070         template <typename genType>
+00071         detail::tvec3<typename genType::value_type> noise3(genType const & x);
+00072 
+00079         template <typename genType>
+00080         detail::tvec4<typename genType::value_type> noise4(genType const & x);
+00081 
+00083 }//namespace glm
+00084 
+00085 #include "func_noise.inl"
+00086 
+00087 #endif//glm_core_func_noise
+
+
+ + + diff --git a/doc/api-0.9.3/a00047.html b/doc/api-0.9.3/a00047.html new file mode 100644 index 00000000..689b8084 --- /dev/null +++ b/doc/api-0.9.3/a00047.html @@ -0,0 +1,80 @@ + + + + +func_packing.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

func_packing.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

double packDouble2x32 (detail::tvec2< detail::uint32 > const &v)
uint packHalf2x16 (vec2 const &v)
detail::uint32 packSnorm2x16 (detail::tvec2< detail::float32 > const &v)
detail::uint32 packSnorm4x8 (detail::tvec4< detail::float32 > const &v)
detail::uint32 packUnorm2x16 (detail::tvec2< detail::float32 > const &v)
detail::uint32 packUnorm4x8 (detail::tvec4< detail::float32 > const &v)
detail::tvec2< detail::uint32 > unpackDouble2x32 (double const &v)
vec2 unpackHalf2x16 (uint const &v)
detail::tvec2< detail::float32 > unpackSnorm2x16 (detail::uint32 const &p)
detail::tvec4< detail::float32 > unpackSnorm4x8 (detail::uint32 const &p)
detail::tvec2< detail::float32 > unpackUnorm2x16 (detail::uint32 const &p)
detail::tvec4< detail::float32 > unpackUnorm4x8 (detail::uint32 const &p)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2010-03-17 / 2011-06-15
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.20.8 specification, section 8.4
+ +

Definition in file func_packing.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00047_source.html b/doc/api-0.9.3/a00047_source.html new file mode 100644 index 00000000..03c667ad --- /dev/null +++ b/doc/api-0.9.3/a00047_source.html @@ -0,0 +1,118 @@ + + + + +func_packing.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_packing.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 #ifndef GLM_CORE_func_packing
+00037 #define GLM_CORE_func_packing GLM_VERSION
+00038 
+00039 namespace glm
+00040 {       
+00043 
+00055         detail::uint32 packUnorm2x16(detail::tvec2<detail::float32> const & v);
+00056 
+00068         detail::uint32 packSnorm2x16(detail::tvec2<detail::float32> const & v);
+00069         
+00081         detail::uint32 packUnorm4x8(detail::tvec4<detail::float32> const & v);
+00082         
+00094         detail::uint32 packSnorm4x8(detail::tvec4<detail::float32> const & v);
+00095 
+00107         detail::tvec2<detail::float32> unpackUnorm2x16(detail::uint32 const & p);
+00108 
+00120         detail::tvec2<detail::float32> unpackSnorm2x16(detail::uint32 const & p);
+00121         
+00133     detail::tvec4<detail::float32> unpackUnorm4x8(detail::uint32 const & p);
+00134         
+00146         detail::tvec4<detail::float32> unpackSnorm4x8(detail::uint32 const & p);
+00147 
+00156         double packDouble2x32(detail::tvec2<detail::uint32> const & v);
+00157         
+00165         detail::tvec2<detail::uint32> unpackDouble2x32(double const & v);
+00166 
+00167         
+00176         uint packHalf2x16(vec2 const & v);
+00177         
+00186         vec2 unpackHalf2x16(uint const & v);
+00187         
+00189 }//namespace glm
+00190 
+00191 #include "func_packing.inl"
+00192 
+00193 #endif//GLM_CORE_func_packing
+00194 
+
+
+ + + diff --git a/doc/api-0.9.2/a00153.html b/doc/api-0.9.3/a00048.html similarity index 61% rename from doc/api-0.9.2/a00153.html rename to doc/api-0.9.3/a00048.html index 9907dfe1..e50c8c2b 100644 --- a/doc/api-0.9.2/a00153.html +++ b/doc/api-0.9.3/a00048.html @@ -2,18 +2,18 @@ -glm::core::function::trigonometric Namespace Reference +func_trigonometric.hpp File Reference - +
@@ -46,52 +37,62 @@
-
glm::core::function::trigonometric Namespace Reference
+

func_trigonometric.hpp File Reference

-

Define Angle and trigonometry functions from Section 8.1 of GLSL 1.30.8 specification. -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Functions

template<typename genType >
genType acos (genType const &x)
genType acos (genType const &x)
template<typename genType >
genType acosh (genType const &x)
genType acosh (genType const &x)
template<typename genType >
genType asin (genType const &x)
genType asin (genType const &x)
template<typename genType >
genType asinh (genType const &x)
genType asinh (genType const &x)
template<typename genType >
genType atan (genType const &y, genType const &x)
genType atan (genType const &y, genType const &x)
template<typename genType >
genType atan (genType const &y_over_x)
genType atan (genType const &y_over_x)
template<typename genType >
genType atanh (genType const &x)
genType atanh (genType const &x)
template<typename genType >
genType cos (genType const &angle)
genType cos (genType const &angle)
template<typename genType >
genType cosh (genType const &angle)
genType cosh (genType const &angle)
template<typename genType >
genType degrees (genType const &radians)
genType degrees (genType const &radians)
template<typename genType >
genType radians (genType const &degrees)
genType radians (genType const &degrees)
template<typename genType >
genType sin (genType const &angle)
genType sin (genType const &angle)
template<typename genType >
genType sinh (genType const &angle)
genType sinh (genType const &angle)
template<typename genType >
genType tan (genType const &angle)
genType tan (genType const &angle)
template<typename genType >
genType tanh (genType const &angle)
genType tanh (genType const &angle)
-

Detailed Description

-

Define Angle and trigonometry functions from Section 8.1 of GLSL 1.30.8 specification.

-

Included in glm namespace.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-01 / 2011-06-15
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.20.8 specification, section 8.1
+ +

Definition in file func_trigonometric.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00048_source.html b/doc/api-0.9.3/a00048_source.html new file mode 100644 index 00000000..9f4908e2 --- /dev/null +++ b/doc/api-0.9.3/a00048_source.html @@ -0,0 +1,143 @@ + + + + +func_trigonometric.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_trigonometric.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 #ifndef GLM_CORE_func_trigonometric
+00041 #define GLM_CORE_func_trigonometric GLM_VERSION
+00042 
+00043 namespace glm
+00044 {
+00047 
+00054         template <typename genType> 
+00055         genType radians(genType const & degrees);
+00056 
+00063         template <typename genType> 
+00064         genType degrees(genType const & radians);
+00065 
+00073         template <typename genType> 
+00074         genType sin(genType const & angle);
+00075 
+00083         template <typename genType> 
+00084         genType cos(genType const & angle);
+00085 
+00092         template <typename genType> 
+00093         genType tan(genType const & angle); 
+00094 
+00103         template <typename genType> 
+00104         genType asin(genType const & x);
+00105 
+00114         template <typename genType> 
+00115         genType acos(genType const & x);
+00116 
+00127         template <typename genType> 
+00128         genType atan(genType const & y, genType const & x);
+00129 
+00137         template <typename genType> 
+00138         genType atan(genType const & y_over_x);
+00139 
+00146         template <typename genType> 
+00147         genType sinh(genType const & angle);
+00148 
+00155         template <typename genType> 
+00156         genType cosh(genType const & angle);
+00157 
+00164         template <typename genType> 
+00165         genType tanh(genType const & angle);
+00166 
+00173         template <typename genType> 
+00174         genType asinh(genType const & x);
+00175         
+00183         template <typename genType> 
+00184         genType acosh(genType const & x);
+00185 
+00193         template <typename genType> 
+00194         genType atanh(genType const & x);
+00195 
+00197 }//namespace glm
+00198 
+00199 #include "func_trigonometric.inl"
+00200 
+00201 #endif//GLM_CORE_func_trigonometric
+00202 
+00203 
+
+
+ + + diff --git a/doc/api-0.9.3/a00049.html b/doc/api-0.9.3/a00049.html new file mode 100644 index 00000000..49583c16 --- /dev/null +++ b/doc/api-0.9.3/a00049.html @@ -0,0 +1,84 @@ + + + + +func_vector_relational.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

func_vector_relational.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<template< typename > class vecType>
bool all (vecType< bool > const &v)
template<template< typename > class vecType>
bool any (vecType< bool > const &v)
template<typename vecType >
vecType::bool_type equal (vecType const &x, vecType const &y)
template<typename vecType >
vecType::bool_type greaterThan (vecType const &x, vecType const &y)
template<typename vecType >
vecType::bool_type greaterThanEqual (vecType const &x, vecType const &y)
template<typename vecType >
vecType::bool_type lessThanEqual (vecType const &x, vecType const &y)
template<template< typename > class vecType>
vecType< bool > not_ (vecType< bool > const &v)
template<typename vecType >
vecType::bool_type notEqual (vecType const &x, vecType const &y)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-03 / 2011-06-15
+
Author:
Christophe Riccio
+
See also:
- GLSL 4.10.6 specification, section 8.7
+ +

Definition in file func_vector_relational.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00049_source.html b/doc/api-0.9.3/a00049_source.html new file mode 100644 index 00000000..0cb54a23 --- /dev/null +++ b/doc/api-0.9.3/a00049_source.html @@ -0,0 +1,126 @@ + + + + +func_vector_relational.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

func_vector_relational.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 #ifndef GLM_CORE_func_vector_relational
+00042 #define GLM_CORE_func_vector_relational GLM_VERSION
+00043 
+00044 #include "_detail.hpp"
+00045 
+00046 namespace glm
+00047 {
+00050 
+00057     template <typename vecType> 
+00058         typename vecType::bool_type lessThan(vecType const & x, vecType const & y);
+00059 
+00066         template <typename vecType> 
+00067         typename vecType::bool_type lessThanEqual(vecType const & x, vecType const & y);
+00068 
+00075         template <typename vecType> 
+00076         typename vecType::bool_type greaterThan(vecType const & x, vecType const & y);
+00077 
+00084         template <typename vecType> 
+00085         typename vecType::bool_type greaterThanEqual(vecType const & x, vecType const & y);
+00086 
+00093         template <typename vecType> 
+00094         typename vecType::bool_type equal(vecType const & x, vecType const & y);
+00095 
+00102         template <typename vecType> 
+00103         typename vecType::bool_type notEqual(vecType const & x, vecType const & y);
+00104 
+00111         template <template <typename> class vecType> 
+00112         bool any(vecType<bool> const & v);
+00113 
+00120         template <template <typename> class vecType> 
+00121         bool all(vecType<bool> const & v);
+00122 
+00130         template <template <typename> class vecType> 
+00131         vecType<bool> not_(vecType<bool> const & v);
+00132 
+00134 }//namespace glm
+00135 
+00136 #include "func_vector_relational.inl"
+00137 
+00138 #endif//GLM_CORE_func_vector_relational
+
+
+ + + diff --git a/doc/api-0.9.3/a00050.html b/doc/api-0.9.3/a00050.html new file mode 100644 index 00000000..0e44ce7b --- /dev/null +++ b/doc/api-0.9.3/a00050.html @@ -0,0 +1,69 @@ + + + + +glm.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

glm.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+
Date:
2009-05-01 / 2011-05-16
+
Author:
Christophe Riccio
+

GLM Core (Dependence)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2005-01-14 / 2011-10-24
+
Author:
Christophe Riccio
+ +

Definition in file glm.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00050_source.html b/doc/api-0.9.3/a00050_source.html new file mode 100644 index 00000000..d9cee9c9 --- /dev/null +++ b/doc/api-0.9.3/a00050_source.html @@ -0,0 +1,172 @@ + + + + +glm.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

glm.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 
+00043 
+00044 
+00045 
+00046 
+00047 
+00048 
+00049 
+00050 
+00051 
+00052 
+00053 
+00054 
+00055 
+00056 
+00057 
+00058 
+00059 
+00060 
+00061 
+00062 
+00063 
+00064 
+00065 
+00066 
+00067 
+00068 
+00069 
+00070 
+00071 
+00072 
+00073 
+00074 
+00075 
+00076 
+00077 
+00078 #include "core/_fixes.hpp"
+00079 
+00080 #ifndef glm_glm
+00081 #define glm_glm
+00082 
+00083 #include <cmath>
+00084 #include <climits>
+00085 #include <cfloat>
+00086 #include <limits>
+00087 //#include <type_traits>
+00088 #include "core/setup.hpp"
+00089 
+00090 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_CORE_INCLUDED_DISPLAYED))
+00091 #       define GLM_MESSAGE_CORE_INCLUDED_DISPLAYED
+00092 #       pragma message("GLM: Core library included")
+00093 #endif//GLM_MESSAGE
+00094 
+00095 #include "./core/_detail.hpp"
+00096 #include "./core/type.hpp"
+00097 
+00098 #include "./core/func_trigonometric.hpp"
+00099 #include "./core/func_exponential.hpp"
+00100 #include "./core/func_common.hpp"
+00101 #include "./core/func_packing.hpp"
+00102 #include "./core/func_geometric.hpp"
+00103 #include "./core/func_matrix.hpp"
+00104 #include "./core/func_vector_relational.hpp"
+00105 #include "./core/func_integer.hpp"
+00106 #include "./core/func_noise.hpp"
+00107 #include "./core/_swizzle.hpp"
+00108 
+00110 // check type sizes
+00111 #ifndef GLM_STATIC_ASSERT_NULL
+00112         GLM_STATIC_ASSERT(sizeof(glm::detail::int8) == 1, "int8 size isn't 1 byte on this platform");
+00113         GLM_STATIC_ASSERT(sizeof(glm::detail::int16) == 2, "int16 size isn't 2 bytes on this platform");
+00114         GLM_STATIC_ASSERT(sizeof(glm::detail::int32) == 4, "int32 size isn't 4 bytes on this platform");
+00115         GLM_STATIC_ASSERT(sizeof(glm::detail::int64) == 8, "int64 size isn't 8 bytes on this platform");
+00116 
+00117         GLM_STATIC_ASSERT(sizeof(glm::detail::uint8) == 1, "uint8 size isn't 1 byte on this platform");
+00118         GLM_STATIC_ASSERT(sizeof(glm::detail::uint16) == 2, "uint16 size isn't 2 bytes on this platform");
+00119         GLM_STATIC_ASSERT(sizeof(glm::detail::uint32) == 4, "uint32 size isn't 4 bytes on this platform");
+00120         GLM_STATIC_ASSERT(sizeof(glm::detail::uint64) == 8, "uint64 size isn't 8 bytes on this platform");
+00121 
+00122         GLM_STATIC_ASSERT(sizeof(glm::detail::float16) == 2, "float16 size isn't 2 bytes on this platform");
+00123         GLM_STATIC_ASSERT(sizeof(glm::detail::float32) == 4, "float32 size isn't 4 bytes on this platform");
+00124         GLM_STATIC_ASSERT(sizeof(glm::detail::float64) == 8, "float64 size isn't 8 bytes on this platform");
+00125 #endif//GLM_STATIC_ASSERT_NULL
+00126 
+00127 #endif//glm_glm
+
+
+ + + diff --git a/doc/api-0.9.3/a00051.html b/doc/api-0.9.3/a00051.html new file mode 100644 index 00000000..d150ac6e --- /dev/null +++ b/doc/api-0.9.3/a00051.html @@ -0,0 +1,74 @@ + + + + +gradient_paint.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

gradient_paint.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename valType >
valType linearGradient (detail::tvec2< valType > const &Point0, detail::tvec2< valType > const &Point1, detail::tvec2< valType > const &Position)
template<typename valType >
valType radialGradient (detail::tvec2< valType > const &Center, valType const &Radius, detail::tvec2< valType > const &Focal, detail::tvec2< valType > const &Position)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_gradient_paint: Procedural gradient color

+
Date:
2009-03-06 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_optimum_pow: Optimum pow (dependence)
+ +

Definition in file gradient_paint.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00051_source.html b/doc/api-0.9.3/a00051_source.html new file mode 100644 index 00000000..20d89259 --- /dev/null +++ b/doc/api-0.9.3/a00051_source.html @@ -0,0 +1,115 @@ + + + + +gradient_paint.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

gradient_paint.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_gradient_paint
+00039 #define GLM_GTX_gradient_paint GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 #include "../gtx/optimum_pow.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_gradient_paint extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         template <typename valType>
+00057         valType radialGradient(
+00058                 detail::tvec2<valType> const & Center,
+00059                 valType const & Radius,
+00060                 detail::tvec2<valType> const & Focal,
+00061                 detail::tvec2<valType> const & Position);
+00062 
+00065         template <typename valType>
+00066         valType linearGradient(
+00067                 detail::tvec2<valType> const & Point0,
+00068                 detail::tvec2<valType> const & Point1,
+00069                 detail::tvec2<valType> const & Position);
+00070 
+00072 }// namespace glm
+00073 
+00074 #include "gradient_paint.inl"
+00075 
+00076 #endif//GLM_GTX_gradient_paint
+
+
+ + + diff --git a/doc/api-0.9.3/a00052.html b/doc/api-0.9.3/a00052.html new file mode 100644 index 00000000..a0a1dbd7 --- /dev/null +++ b/doc/api-0.9.3/a00052.html @@ -0,0 +1,99 @@ + + + + +half_float.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

half_float.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Typedefs

typedef detail::thalf half
typedef detail::tmat2x2
+< detail::thalf > 
hmat2
typedef detail::tmat2x2
+< detail::thalf > 
hmat2x2
typedef detail::tmat2x3
+< detail::thalf > 
hmat2x3
typedef detail::tmat2x4
+< detail::thalf > 
hmat2x4
typedef detail::tmat3x3
+< detail::thalf > 
hmat3
typedef detail::tmat3x2
+< detail::thalf > 
hmat3x2
typedef detail::tmat3x3
+< detail::thalf > 
hmat3x3
typedef detail::tmat3x4
+< detail::thalf > 
hmat3x4
typedef detail::tmat4x4
+< detail::thalf > 
hmat4
typedef detail::tmat4x2
+< detail::thalf > 
hmat4x2
typedef detail::tmat4x3
+< detail::thalf > 
hmat4x3
typedef detail::tmat4x4
+< detail::thalf > 
hmat4x4
typedef detail::tvec2
+< detail::thalf > 
hvec2
typedef detail::tvec3
+< detail::thalf > 
hvec3
typedef detail::tvec4
+< detail::thalf > 
hvec4
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_half_float: Half-precision floating-point based types and functions

+
Date:
2009-04-29 / 2011-06-05
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file half_float.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00052_source.html b/doc/api-0.9.3/a00052_source.html new file mode 100644 index 00000000..a859c3e7 --- /dev/null +++ b/doc/api-0.9.3/a00052_source.html @@ -0,0 +1,388 @@ + + + + +half_float.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

half_float.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 #ifndef GLM_GTC_half_float
+00038 #define GLM_GTC_half_float GLM_VERSION
+00039 
+00040 // Dependency:
+00041 #include "../glm.hpp"
+00042 
+00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00044 #       pragma message("GLM: GLM_GTC_half_float extension included")
+00045 #endif
+00046 
+00047 namespace glm{
+00048 namespace detail
+00049 {
+00050 #if(!GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE())
+00051         template <>
+00052         struct tvec2<thalf>
+00053         {
+00054                 enum ctor{null};
+00055                 typedef thalf value_type;
+00056                 typedef std::size_t size_type;
+00057 
+00058         GLM_FUNC_DECL size_type length() const;
+00059                 static GLM_FUNC_DECL size_type value_size();
+00060 
+00061                 typedef tvec2<thalf> type;
+00062                 typedef tvec2<bool> bool_type;
+00063 
+00065                 // Data
+00066 
+00067                 thalf x, y;
+00068 
+00070                 // Accesses
+00071 
+00072                 thalf & operator[](size_type i);
+00073                 thalf const & operator[](size_type i) const;
+00074 
+00076                 // Implicit basic constructors
+00077 
+00078                 tvec2();
+00079                 tvec2(tvec2<thalf> const & v);
+00080 
+00082                 // Explicit basic constructors
+00083 
+00084                 explicit tvec2(ctor);
+00085                 explicit tvec2(
+00086                         thalf const & s);
+00087                 explicit tvec2(
+00088                         thalf const & s1, 
+00089                         thalf const & s2);
+00090 
+00092                 // Swizzle constructors
+00093 
+00094                 tvec2(tref2<thalf> const & r);
+00095 
+00097                 // Convertion scalar constructors
+00098 
+00100                 template <typename U> 
+00101                 explicit tvec2(U const & x);
+00103                 template <typename U, typename V> 
+00104                 explicit tvec2(U const & x, V const & y);                       
+00105 
+00107                 // Convertion vector constructors
+00108 
+00110                 template <typename U> 
+00111                 explicit tvec2(tvec2<U> const & v);
+00113                 template <typename U> 
+00114                 explicit tvec2(tvec3<U> const & v);
+00116                 template <typename U> 
+00117                 explicit tvec2(tvec4<U> const & v);
+00118 
+00120                 // Unary arithmetic operators
+00121 
+00122                 tvec2<thalf>& operator= (tvec2<thalf> const & v);
+00123 
+00124                 tvec2<thalf>& operator+=(thalf const & s);
+00125                 tvec2<thalf>& operator+=(tvec2<thalf> const & v);
+00126                 tvec2<thalf>& operator-=(thalf const & s);
+00127                 tvec2<thalf>& operator-=(tvec2<thalf> const & v);
+00128                 tvec2<thalf>& operator*=(thalf const & s);
+00129                 tvec2<thalf>& operator*=(tvec2<thalf> const & v);
+00130                 tvec2<thalf>& operator/=(thalf const & s);
+00131                 tvec2<thalf>& operator/=(tvec2<thalf> const & v);
+00132                 tvec2<thalf>& operator++();
+00133                 tvec2<thalf>& operator--();
+00134 
+00136                 // Swizzle operators
+00137 
+00138                 thalf swizzle(comp X) const;
+00139                 tvec2<thalf> swizzle(comp X, comp Y) const;
+00140                 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
+00141                 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
+00142                 tref2<thalf> swizzle(comp X, comp Y);
+00143         };
+00144 
+00145         template <>
+00146         struct tvec3<thalf>
+00147         {
+00148                 enum ctor{null};
+00149                 typedef thalf value_type;
+00150                 typedef std::size_t size_type;
+00151         GLM_FUNC_DECL size_type length() const;
+00152                 static GLM_FUNC_DECL size_type value_size();
+00153 
+00154                 typedef tvec3<thalf> type;
+00155                 typedef tvec3<bool> bool_type;
+00156 
+00158                 // Data
+00159 
+00160                 thalf x, y, z;
+00161 
+00163                 // Accesses
+00164 
+00165                 thalf & operator[](size_type i);
+00166                 thalf const & operator[](size_type i) const;
+00167 
+00169                 // Implicit basic constructors
+00170 
+00171                 tvec3();
+00172                 tvec3(tvec3<thalf> const & v);
+00173 
+00175                 // Explicit basic constructors
+00176 
+00177                 explicit tvec3(ctor);
+00178                 explicit tvec3(
+00179                         thalf const & s);
+00180                 explicit tvec3(
+00181                         thalf const & s1, 
+00182                         thalf const & s2, 
+00183                         thalf const & s3);
+00184 
+00186                 // Swizzle constructors
+00187 
+00188                 tvec3(tref3<thalf> const & r);
+00189 
+00191                 // Convertion scalar constructors
+00192 
+00194                 template <typename U> 
+00195                 explicit tvec3(U const & x);
+00197                 template <typename U, typename V, typename W> 
+00198                 explicit tvec3(U const & x, V const & y, W const & z);                  
+00199 
+00201                 // Convertion vector constructors
+00202 
+00204                 template <typename A, typename B> 
+00205                 explicit tvec3(tvec2<A> const & v, B const & s);
+00207                 template <typename A, typename B> 
+00208                 explicit tvec3(A const & s, tvec2<B> const & v);
+00210                 template <typename U> 
+00211                 explicit tvec3(tvec3<U> const & v);
+00213                 template <typename U> 
+00214                 explicit tvec3(tvec4<U> const & v);
+00215 
+00217                 // Unary arithmetic operators
+00218 
+00219                 tvec3<thalf>& operator= (tvec3<thalf> const & v);
+00220 
+00221                 tvec3<thalf>& operator+=(thalf const & s);
+00222                 tvec3<thalf>& operator+=(tvec3<thalf> const & v);
+00223                 tvec3<thalf>& operator-=(thalf const & s);
+00224                 tvec3<thalf>& operator-=(tvec3<thalf> const & v);
+00225                 tvec3<thalf>& operator*=(thalf const & s);
+00226                 tvec3<thalf>& operator*=(tvec3<thalf> const & v);
+00227                 tvec3<thalf>& operator/=(thalf const & s);
+00228                 tvec3<thalf>& operator/=(tvec3<thalf> const & v);
+00229                 tvec3<thalf>& operator++();
+00230                 tvec3<thalf>& operator--();
+00231 
+00233                 // Swizzle operators
+00234 
+00235                 thalf swizzle(comp X) const;
+00236                 tvec2<thalf> swizzle(comp X, comp Y) const;
+00237                 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
+00238                 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
+00239                 tref3<thalf> swizzle(comp X, comp Y, comp Z);
+00240         };
+00241 
+00242         template <>
+00243         struct tvec4<thalf>
+00244         {
+00245                 enum ctor{null};
+00246                 typedef thalf value_type;
+00247                 typedef std::size_t size_type;
+00248         GLM_FUNC_DECL size_type length() const;
+00249                 static GLM_FUNC_DECL size_type value_size();
+00250 
+00251                 typedef tvec4<thalf> type;
+00252                 typedef tvec4<bool> bool_type;
+00253 
+00255                 // Data
+00256 
+00257                 thalf x, y, z, w;
+00258 
+00260                 // Accesses
+00261 
+00262                 thalf & operator[](size_type i);
+00263                 thalf const & operator[](size_type i) const;
+00264 
+00266                 // Implicit basic constructors
+00267 
+00268                 tvec4();
+00269                 tvec4(tvec4<thalf> const & v);
+00270 
+00272                 // Explicit basic constructors
+00273 
+00274                 explicit tvec4(ctor);
+00275                 explicit tvec4(
+00276                         thalf const & s);
+00277                 explicit tvec4(
+00278                         thalf const & s0, 
+00279                         thalf const & s1, 
+00280                         thalf const & s2, 
+00281                         thalf const & s3);
+00282 
+00284                 // Swizzle constructors
+00285 
+00286                 tvec4(tref4<thalf> const & r);
+00287 
+00289                 // Convertion scalar constructors
+00290 
+00292                 template <typename U> 
+00293                 explicit tvec4(U const & x);
+00295                 template <typename A, typename B, typename C, typename D> 
+00296                 explicit tvec4(A const & x, B const & y, C const & z, D const & w);                     
+00297 
+00299                 // Convertion vector constructors
+00300 
+00302                 template <typename A, typename B, typename C> 
+00303                 explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2);
+00305                 template <typename A, typename B, typename C> 
+00306                 explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2);
+00308                 template <typename A, typename B, typename C> 
+00309                 explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v);
+00311                 template <typename A, typename B> 
+00312                 explicit tvec4(tvec3<A> const & v, B const & s);
+00314                 template <typename A, typename B> 
+00315                 explicit tvec4(A const & s, tvec3<B> const & v);
+00317                 template <typename A, typename B> 
+00318                 explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2);
+00320                 template <typename U> 
+00321                 explicit tvec4(tvec4<U> const & v);
+00322 
+00324                 // Unary arithmetic operators
+00325 
+00326                 tvec4<thalf>& operator= (tvec4<thalf> const & v);
+00327 
+00328                 tvec4<thalf>& operator+=(thalf const & s);
+00329                 tvec4<thalf>& operator+=(tvec4<thalf> const & v);
+00330                 tvec4<thalf>& operator-=(thalf const & s);
+00331                 tvec4<thalf>& operator-=(tvec4<thalf> const & v);
+00332                 tvec4<thalf>& operator*=(thalf const & s);
+00333                 tvec4<thalf>& operator*=(tvec4<thalf> const & v);
+00334                 tvec4<thalf>& operator/=(thalf const & s);
+00335                 tvec4<thalf>& operator/=(tvec4<thalf> const & v);
+00336                 tvec4<thalf>& operator++();
+00337                 tvec4<thalf>& operator--();
+00338 
+00340                 // Swizzle operators
+00341 
+00342                 thalf swizzle(comp X) const;
+00343                 tvec2<thalf> swizzle(comp X, comp Y) const;
+00344                 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
+00345                 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
+00346                 tref4<thalf> swizzle(comp X, comp Y, comp Z, comp W);
+00347         };
+00348 #endif//(!GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE())
+00349 }
+00350 //namespace detail
+00351 
+00354 
+00357         typedef detail::thalf                                   half;
+00358 
+00361         typedef detail::tvec2<detail::thalf>    hvec2;
+00362 
+00365         typedef detail::tvec3<detail::thalf>    hvec3;
+00366 
+00369         typedef detail::tvec4<detail::thalf>    hvec4;
+00370 
+00373         typedef detail::tmat2x2<detail::thalf>  hmat2;
+00374     
+00377         typedef detail::tmat3x3<detail::thalf>  hmat3;
+00378 
+00381         typedef detail::tmat4x4<detail::thalf>  hmat4;
+00382 
+00385         typedef detail::tmat2x2<detail::thalf>  hmat2x2;
+00386     
+00389         typedef detail::tmat2x3<detail::thalf>  hmat2x3;
+00390     
+00393         typedef detail::tmat2x4<detail::thalf>  hmat2x4;
+00394 
+00397         typedef detail::tmat3x2<detail::thalf>  hmat3x2;
+00398     
+00401         typedef detail::tmat3x3<detail::thalf>  hmat3x3;
+00402     
+00405         typedef detail::tmat3x4<detail::thalf>  hmat3x4;
+00406 
+00409         typedef detail::tmat4x2<detail::thalf>  hmat4x2;    
+00410 
+00413         typedef detail::tmat4x3<detail::thalf>  hmat4x3;
+00414     
+00417         typedef detail::tmat4x4<detail::thalf>  hmat4x4;
+00418     
+00420 }// namespace glm
+00421 
+00422 #include "half_float.inl"
+00423 
+00424 #endif//GLM_GTC_half_float
+
+
+ + + diff --git a/doc/api-0.9.3/a00053.html b/doc/api-0.9.3/a00053.html new file mode 100644 index 00000000..0ddc3e47 --- /dev/null +++ b/doc/api-0.9.3/a00053.html @@ -0,0 +1,72 @@ + + + + +handed_coordinate_space.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

handed_coordinate_space.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T >
bool leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
template<typename T >
bool rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_handed_coordinate_space: Space Handedness

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file handed_coordinate_space.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00053_source.html b/doc/api-0.9.3/a00053_source.html new file mode 100644 index 00000000..18dd0401 --- /dev/null +++ b/doc/api-0.9.3/a00053_source.html @@ -0,0 +1,113 @@ + + + + +handed_coordinate_space.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

handed_coordinate_space.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_handed_coordinate_space
+00039 #define GLM_GTX_handed_coordinate_space GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_handed_coordinate_space extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename T> 
+00056         bool rightHanded(
+00057                 detail::tvec3<T> const & tangent, 
+00058                 detail::tvec3<T> const & binormal, 
+00059                 detail::tvec3<T> const & normal);
+00060 
+00063         template <typename T> 
+00064         bool leftHanded(
+00065                 detail::tvec3<T> const & tangent, 
+00066                 detail::tvec3<T> const & binormal, 
+00067                 detail::tvec3<T> const & normal);
+00068 
+00070 }// namespace glm
+00071 
+00072 #include "handed_coordinate_space.inl"
+00073 
+00074 #endif//GLM_GTX_handed_coordinate_space
+
+
+ + + diff --git a/doc/api-0.9.3/a00054.html b/doc/api-0.9.3/a00054.html new file mode 100644 index 00000000..eb15a0a3 --- /dev/null +++ b/doc/api-0.9.3/a00054.html @@ -0,0 +1,63 @@ + + + + +hint.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

hint.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-14 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file hint.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00054_source.html b/doc/api-0.9.3/a00054_source.html new file mode 100644 index 00000000..c7e3584d --- /dev/null +++ b/doc/api-0.9.3/a00054_source.html @@ -0,0 +1,86 @@ + + + + +hint.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

hint.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type
+00030 #define glm_core_type
+00031 
+00032 namespace glm
+00033 {
+00034         // Use dont_care, nicest and fastest to optimize implementations.
+00035         class dont_care {};
+00036         class nicest {};
+00037         class fastest {};
+00038 }//namespace glm
+00039 
+00040 #endif//glm_core_type
+
+
+ + + diff --git a/doc/api-0.9.3/a00055.html b/doc/api-0.9.3/a00055.html new file mode 100644 index 00000000..8c6e3214 --- /dev/null +++ b/doc/api-0.9.3/a00055.html @@ -0,0 +1,86 @@ + + + + +inertia.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

inertia.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
detail::tmat3x3< T > ballInertia3 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat4x4< T > ballInertia4 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat3x3< T > boxInertia3 (T const &Mass, detail::tvec3< T > const &Scale)
template<typename T >
detail::tmat4x4< T > boxInertia4 (T const &Mass, detail::tvec3< T > const &Scale)
template<typename T >
detail::tmat3x3< T > diskInertia3 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat4x4< T > diskInertia4 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat3x3< T > sphereInertia3 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat4x4< T > sphereInertia4 (T const &Mass, T const &Radius)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_inertia: Intertial matrix

+
Date:
2006-04-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file inertia.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00055_source.html b/doc/api-0.9.3/a00055_source.html new file mode 100644 index 00000000..cd25f0b1 --- /dev/null +++ b/doc/api-0.9.3/a00055_source.html @@ -0,0 +1,142 @@ + + + + +inertia.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

inertia.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_inertia
+00040 #define GLM_GTX_inertia GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_inertia extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         template <typename T> 
+00057         detail::tmat3x3<T> boxInertia3(
+00058                 T const & Mass, 
+00059                 detail::tvec3<T> const & Scale);
+00060                 
+00063         template <typename T> 
+00064         detail::tmat4x4<T> boxInertia4(
+00065                 T const & Mass, 
+00066                 detail::tvec3<T> const & Scale);
+00067                 
+00070         template <typename T> 
+00071         detail::tmat3x3<T> diskInertia3(
+00072                 T const & Mass, 
+00073                 T const & Radius);
+00074 
+00077         template <typename T> 
+00078         detail::tmat4x4<T> diskInertia4(
+00079                 T const & Mass, 
+00080                 T const & Radius);
+00081 
+00084         template <typename T> 
+00085         detail::tmat3x3<T> ballInertia3(
+00086                 T const & Mass, 
+00087                 T const & Radius);
+00088                 
+00091         template <typename T> 
+00092         detail::tmat4x4<T> ballInertia4(
+00093                 T const & Mass, 
+00094                 T const & Radius);
+00095 
+00098         template <typename T> 
+00099         detail::tmat3x3<T> sphereInertia3(
+00100                 T const & Mass, 
+00101                 T const & Radius);
+00102 
+00105         template <typename T> 
+00106         detail::tmat4x4<T> sphereInertia4(
+00107                 T const & Mass, 
+00108                 T const & Radius);
+00109 
+00111 }// namespace glm
+00112 
+00113 #include "inertia.inl"
+00114 
+00115 #endif//GLM_GTX_inertia
+
+
+ + + diff --git a/doc/api-0.9.3/a00056.html b/doc/api-0.9.3/a00056.html new file mode 100644 index 00000000..e1e50550 --- /dev/null +++ b/doc/api-0.9.3/a00056.html @@ -0,0 +1,71 @@ + + + + +int_10_10_10_2.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

int_10_10_10_2.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + +

+Functions

dword uint10_10_10_2_cast (glm::vec4 const &v)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_int_10_10_10_2: Packed integer

+
Date:
2010-07-07 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_raw_data: Raw data (dependence)
+ +

Definition in file int_10_10_10_2.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00056_source.html b/doc/api-0.9.3/a00056_source.html new file mode 100644 index 00000000..4d4f9dd9 --- /dev/null +++ b/doc/api-0.9.3/a00056_source.html @@ -0,0 +1,105 @@ + + + + +int_10_10_10_2.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

int_10_10_10_2.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_int_10_10_10_2
+00040 #define GLM_GTX_int_10_10_10_2 GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/raw_data.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_int_10_10_10_2 extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         dword uint10_10_10_2_cast(glm::vec4 const & v);
+00058 
+00060 }//namespace glm
+00061 
+00062 #include "int_10_10_10_2.inl"
+00063 
+00064 #endif//GLM_GTX_int_10_10_10_2
+
+
+ + + diff --git a/doc/api-0.9.3/a00057.html b/doc/api-0.9.3/a00057.html new file mode 100644 index 00000000..b1afa0a8 --- /dev/null +++ b/doc/api-0.9.3/a00057.html @@ -0,0 +1,84 @@ + + + + +integer.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

integer.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Typedefs

typedef signed int sint

+Functions

template<typename genType >
genType factorial (genType const &x)
unsigned int floor_log2 (unsigned int x)
template<typename genIUType >
genIUType log2 (genIUType const &x)
uint mod (uint x, uint y)
int mod (int x, int y)
uint nlz (uint x)
uint pow (uint x, uint y)
int pow (int x, int y)
int sqrt (int x)
uint sqrt (uint x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_integer: Extended integer functions

+
Date:
2005-12-24 / 2011-10-13
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file integer.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00057_source.html b/doc/api-0.9.3/a00057_source.html new file mode 100644 index 00000000..ea48914b --- /dev/null +++ b/doc/api-0.9.3/a00057_source.html @@ -0,0 +1,125 @@ + + + + +integer.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

integer.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_integer
+00039 #define GLM_GTX_integer GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_integer extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         int pow(int x, int y);
+00056 
+00059         int sqrt(int x);
+00060 
+00063         template <typename genIUType>
+00064         genIUType log2(genIUType const & x);
+00065 
+00068         unsigned int floor_log2(unsigned int x);
+00069 
+00072         int mod(int x, int y);
+00073 
+00076         template <typename genType> 
+00077         genType factorial(genType const & x);
+00078 
+00081         typedef signed int                                      sint;
+00082 
+00085         uint pow(uint x, uint y);
+00086 
+00089         uint sqrt(uint x);
+00090 
+00093         uint mod(uint x, uint y);
+00094 
+00097         uint nlz(uint x);
+00098 
+00100 }//namespace glm
+00101 
+00102 #include "integer.inl"
+00103 
+00104 #endif//GLM_GTX_integer
+
+
+ + + diff --git a/doc/api-0.9.2/a00189.html b/doc/api-0.9.3/a00058.html similarity index 50% rename from doc/api-0.9.2/a00189.html rename to doc/api-0.9.3/a00058.html index b57a0bc3..dbe2140e 100644 --- a/doc/api-0.9.2/a00189.html +++ b/doc/api-0.9.3/a00058.html @@ -2,18 +2,18 @@ -glm::gtx::intersect Namespace Reference +intersect.hpp File Reference - +
@@ -45,29 +37,42 @@
-
glm::gtx::intersect Namespace Reference
+

intersect.hpp File Reference

-

< GLM_GTX_intersect extension: Add intersection functions -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- + - + - + - +

Functions

template<typename genType >
bool intersectLineSphere (genType const &point0, genType const &point1, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
bool intersectLineSphere (genType const &point0, genType const &point1, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
template<typename genType >
bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
template<typename genType >
bool intersectRaySphere (genType const &orig, genType const &dir, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
bool intersectRaySphere (genType const &orig, genType const &dir, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
template<typename genType >
bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
-

Detailed Description

-

< GLM_GTX_intersect extension: Add intersection functions

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_intersect: Intersection tests

+
Date:
2007-04-03 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_closest_point: Find closest point (dependence)
+ +

Definition in file intersect.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00058_source.html b/doc/api-0.9.3/a00058_source.html new file mode 100644 index 00000000..9e17d7c5 --- /dev/null +++ b/doc/api-0.9.3/a00058_source.html @@ -0,0 +1,127 @@ + + + + +intersect.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

intersect.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_intersect
+00040 #define GLM_GTX_intersect GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/closest_point.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_closest_point extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename genType>
+00058         bool intersectRayTriangle(
+00059                 genType const & orig, genType const & dir,
+00060                 genType const & vert0, genType const & vert1, genType const & vert2,
+00061                 genType & baryPosition);
+00062 
+00065         template <typename genType>
+00066         bool intersectLineTriangle(
+00067                 genType const & orig, genType const & dir,
+00068                 genType const & vert0, genType const & vert1, genType const & vert2,
+00069                 genType & position);
+00070 
+00073         template <typename genType>
+00074         bool intersectRaySphere(
+00075                 genType const & orig, genType const & dir,
+00076                 genType const & center, typename genType::value_type radius,
+00077                 genType & position, genType & normal);
+00078 
+00081         template <typename genType>
+00082         bool intersectLineSphere(
+00083                 genType const & point0, genType const & point1,
+00084                 genType const & center, typename genType::value_type radius,
+00085                 genType & position, genType & normal);
+00086 
+00088 }//namespace glm
+00089 
+00090 #include "intersect.inl"
+00091 
+00092 #endif//GLM_GTX_intersect
+
+
+ + + diff --git a/doc/api-0.9.3/a00059.html b/doc/api-0.9.3/a00059.html new file mode 100644 index 00000000..faf1aaa5 --- /dev/null +++ b/doc/api-0.9.3/a00059.html @@ -0,0 +1,69 @@ + + + + +intrinsic_common.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

intrinsic_common.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2009-05-11 / 2011-06-15
+
Author:
Christophe Riccio
+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2009-06-05 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file intrinsic_common.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00059_source.html b/doc/api-0.9.3/a00059_source.html new file mode 100644 index 00000000..a71d7382 --- /dev/null +++ b/doc/api-0.9.3/a00059_source.html @@ -0,0 +1,135 @@ + + + + +intrinsic_common.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

intrinsic_common.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_detail_intrinsic_common
+00030 #define glm_detail_intrinsic_common
+00031 
+00032 #include "setup.hpp"
+00033 
+00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
+00035 #       error "SSE2 instructions not supported or enabled"
+00036 #else
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041         __m128 sse_abs_ps(__m128 x);
+00042 
+00043         __m128 sse_sgn_ps(__m128 x);
+00044 
+00045         //floor
+00046         __m128 sse_flr_ps(__m128 v);
+00047 
+00048         //trunc
+00049         __m128 sse_trc_ps(__m128 v);
+00050 
+00051         //round
+00052         __m128 sse_nd_ps(__m128 v);
+00053 
+00054         //roundEven
+00055         __m128 sse_rde_ps(__m128 v);
+00056 
+00057         __m128 sse_rnd_ps(__m128 x);
+00058 
+00059         __m128 sse_ceil_ps(__m128 v);
+00060 
+00061         __m128 sse_frc_ps(__m128 x);
+00062 
+00063         __m128 sse_mod_ps(__m128 x, __m128 y);
+00064 
+00065         __m128 sse_modf_ps(__m128 x, __m128i & i);
+00066 
+00067         //GLM_FUNC_QUALIFIER __m128 sse_min_ps(__m128 x, __m128 y)
+00068 
+00069         //GLM_FUNC_QUALIFIER __m128 sse_max_ps(__m128 x, __m128 y)
+00070 
+00071         __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal);
+00072 
+00073         __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a);
+00074 
+00075         __m128 sse_stp_ps(__m128 edge, __m128 x);
+00076 
+00077         __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x);
+00078 
+00079         __m128 sse_nan_ps(__m128 x);
+00080 
+00081         __m128 sse_inf_ps(__m128 x);
+00082 
+00083 }//namespace detail
+00084 }//namespace glm
+00085 
+00086 #include "intrinsic_common.inl"
+00087 
+00088 #endif//GLM_ARCH
+00089 #endif//glm_detail_intrinsic_common
+
+
+ + + diff --git a/doc/api-0.9.3/a00060.html b/doc/api-0.9.3/a00060.html new file mode 100644 index 00000000..c5656598 --- /dev/null +++ b/doc/api-0.9.3/a00060.html @@ -0,0 +1,63 @@ + + + + +intrinsic_exponential.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

intrinsic_exponential.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2009-05-11 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file intrinsic_exponential.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00060_source.html b/doc/api-0.9.3/a00060_source.html new file mode 100644 index 00000000..33829663 --- /dev/null +++ b/doc/api-0.9.3/a00060_source.html @@ -0,0 +1,125 @@ + + + + +intrinsic_exponential.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

intrinsic_exponential.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_detail_intrinsic_exponential
+00030 #define glm_detail_intrinsic_exponential
+00031 
+00032 #include "setup.hpp"
+00033 
+00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
+00035 #       error "SSE2 instructions not supported or enabled"
+00036 #else
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041 /*
+00042 GLM_FUNC_QUALIFIER __m128 sse_rsqrt_nr_ss(__m128 const x)
+00043 {
+00044         __m128 recip = _mm_rsqrt_ss( x );  // "estimate" opcode
+00045         const static __m128 three = { 3, 3, 3, 3 }; // aligned consts for fast load
+00046         const static __m128 half = { 0.5,0.5,0.5,0.5 };
+00047         __m128 halfrecip = _mm_mul_ss( half, recip );
+00048         __m128 threeminus_xrr = _mm_sub_ss( three, _mm_mul_ss( x, _mm_mul_ss ( recip, recip ) ) );
+00049         return _mm_mul_ss( halfrecip, threeminus_xrr );
+00050 }
+00051  
+00052 GLM_FUNC_QUALIFIER __m128 sse_normalize_fast_ps(  float * RESTRICT vOut, float * RESTRICT vIn )
+00053 {
+00054         __m128 x = _mm_load_ss(&vIn[0]);
+00055         __m128 y = _mm_load_ss(&vIn[1]);
+00056         __m128 z = _mm_load_ss(&vIn[2]);
+00057  
+00058         const __m128 l =  // compute x*x + y*y + z*z
+00059                 _mm_add_ss(
+00060                  _mm_add_ss( _mm_mul_ss(x,x),
+00061                              _mm_mul_ss(y,y)
+00062                             ),
+00063                  _mm_mul_ss( z, z )
+00064                 );
+00065  
+00066  
+00067         const __m128 rsqt = _mm_rsqrt_nr_ss( l );
+00068         _mm_store_ss( &vOut[0] , _mm_mul_ss( rsqt, x ) );
+00069         _mm_store_ss( &vOut[1] , _mm_mul_ss( rsqt, y ) );
+00070         _mm_store_ss( &vOut[2] , _mm_mul_ss( rsqt, z ) );
+00071  
+00072         return _mm_mul_ss( l , rsqt );
+00073 }
+00074 */
+00075 }//namespace detail
+00076 }//namespace glm
+00077 
+00078 #endif//GLM_ARCH
+00079 #endif//glm_detail_intrinsic_exponential
+
+
+ + + diff --git a/doc/api-0.9.3/a00061.html b/doc/api-0.9.3/a00061.html new file mode 100644 index 00000000..b3f8773f --- /dev/null +++ b/doc/api-0.9.3/a00061.html @@ -0,0 +1,63 @@ + + + + +intrinsic_geometric.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

intrinsic_geometric.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2009-05-08 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file intrinsic_geometric.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00061_source.html b/doc/api-0.9.3/a00061_source.html new file mode 100644 index 00000000..1f7d10d0 --- /dev/null +++ b/doc/api-0.9.3/a00061_source.html @@ -0,0 +1,122 @@ + + + + +intrinsic_geometric.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

intrinsic_geometric.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_intrinsic_geometric
+00030 #define glm_core_intrinsic_geometric
+00031 
+00032 #include "setup.hpp"
+00033 
+00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
+00035 #       error "SSE2 instructions not supported or enabled"
+00036 #else
+00037 
+00038 #include "intrinsic_common.hpp"
+00039 
+00040 namespace glm{
+00041 namespace detail
+00042 {
+00043         //length
+00044         __m128 sse_len_ps(__m128 x);
+00045 
+00046         //distance
+00047         __m128 sse_dst_ps(__m128 p0, __m128 p1);
+00048 
+00049         //dot
+00050         __m128 sse_dot_ps(__m128 v1, __m128 v2);
+00051 
+00052         // SSE1
+00053         __m128 sse_dot_ss(__m128 v1, __m128 v2);
+00054 
+00055         //cross
+00056         __m128 sse_xpd_ps(__m128 v1, __m128 v2);
+00057 
+00058         //normalize
+00059         __m128 sse_nrm_ps(__m128 v);
+00060 
+00061         //faceforward
+00062         __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref);
+00063 
+00064         //reflect
+00065         __m128 sse_rfe_ps(__m128 I, __m128 N);
+00066 
+00067         //refract
+00068         __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta);
+00069 
+00070 }//namespace detail
+00071 }//namespace glm
+00072 
+00073 #include "intrinsic_geometric.inl"
+00074 
+00075 #endif//GLM_ARCH
+00076 #endif//glm_core_intrinsic_geometric
+
+
+ + + diff --git a/doc/api-0.9.3/a00062_source.html b/doc/api-0.9.3/a00062_source.html new file mode 100644 index 00000000..5da39f0d --- /dev/null +++ b/doc/api-0.9.3/a00062_source.html @@ -0,0 +1,115 @@ + + + + +intrinsic_matrix.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

intrinsic_matrix.hpp

+
+
+
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_detail_intrinsic_matrix
+00030 #define glm_detail_intrinsic_matrix
+00031 
+00032 #include "setup.hpp"
+00033 
+00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
+00035 #       error "SSE2 instructions not supported or enabled"
+00036 #else
+00037 
+00038 #include "intrinsic_geometric.hpp"
+00039 
+00040 namespace glm{
+00041 namespace detail
+00042 {
+00043         void sse_add_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
+00044 
+00045         void sse_sub_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
+00046 
+00047         __m128 sse_mul_ps(__m128 m[4], __m128 v);
+00048 
+00049         __m128 sse_mul_ps(__m128 v, __m128 m[4]);
+00050 
+00051         void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4]);
+00052 
+00053         void sse_transpose_ps(__m128 const in[4], __m128 out[4]);
+00054 
+00055         void sse_inverse_ps(__m128 const in[4], __m128 out[4]);
+00056 
+00057         void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4]);
+00058 
+00059         __m128 sse_det_ps(__m128 const m[4]);
+00060 
+00061         __m128 sse_slow_det_ps(__m128 const m[4]);
+00062 
+00063 }//namespace detail
+00064 }//namespace glm
+00065 
+00066 #include "intrinsic_matrix.inl"
+00067 
+00068 #endif//GLM_ARCH
+00069 #endif//glm_detail_intrinsic_matrix
+
+
+ + + diff --git a/doc/api-0.9.3/a00063.html b/doc/api-0.9.3/a00063.html new file mode 100644 index 00000000..ed1d0a2b --- /dev/null +++ b/doc/api-0.9.3/a00063.html @@ -0,0 +1,63 @@ + + + + +intrinsic_trigonometric.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

intrinsic_trigonometric.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2009-06-09 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file intrinsic_trigonometric.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00063_source.html b/doc/api-0.9.3/a00063_source.html new file mode 100644 index 00000000..16cf8cd0 --- /dev/null +++ b/doc/api-0.9.3/a00063_source.html @@ -0,0 +1,94 @@ + + + + +intrinsic_trigonometric.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

intrinsic_trigonometric.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_detail_intrinsic_trigonometric
+00030 #define glm_detail_intrinsic_trigonometric
+00031 
+00032 #include "setup.hpp"
+00033 
+00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
+00035 #       error "SSE2 instructions not supported or enabled"
+00036 #else
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041 
+00042 }//namespace detail
+00043 }//namespace glm
+00044 
+00045 #include "intrinsic_trigonometric.inl"
+00046 
+00047 #endif//GLM_ARCH
+00048 #endif//glm_detail_intrinsic_trigonometric
+
+
+ + + diff --git a/doc/api-0.9.3/a00064.html b/doc/api-0.9.3/a00064.html new file mode 100644 index 00000000..1e234a70 --- /dev/null +++ b/doc/api-0.9.3/a00064.html @@ -0,0 +1,63 @@ + + + + +intrinsic_vector_relational.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

intrinsic_vector_relational.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2009-06-09 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file intrinsic_vector_relational.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00064_source.html b/doc/api-0.9.3/a00064_source.html new file mode 100644 index 00000000..a2c6bc9a --- /dev/null +++ b/doc/api-0.9.3/a00064_source.html @@ -0,0 +1,94 @@ + + + + +intrinsic_vector_relational.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

intrinsic_vector_relational.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_detail_intrinsic_vector_relational
+00030 #define glm_detail_intrinsic_vector_relational
+00031 
+00032 #include "setup.hpp"
+00033 
+00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
+00035 #       error "SSE2 instructions not supported or enabled"
+00036 #else
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041 
+00042 }//namespace detail
+00043 }//namespace glm
+00044 
+00045 #include "intrinsic_vector_relational.inl"
+00046 
+00047 #endif//GLM_ARCH
+00048 #endif//glm_detail_intrinsic_vector_relational
+
+
+ + + diff --git a/doc/api-0.9.3/a00065.html b/doc/api-0.9.3/a00065.html new file mode 100644 index 00000000..f9330ef1 --- /dev/null +++ b/doc/api-0.9.3/a00065.html @@ -0,0 +1,70 @@ + + + + +log_base.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

log_base.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

template<typename genType >
genType log (genType const &x, genType const &base)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_log_base: Log with base

+
Date:
2008-10-24 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file log_base.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00065_source.html b/doc/api-0.9.3/a00065_source.html new file mode 100644 index 00000000..221f1639 --- /dev/null +++ b/doc/api-0.9.3/a00065_source.html @@ -0,0 +1,106 @@ + + + + +log_base.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

log_base.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_log_base
+00039 #define GLM_GTX_log_base GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_log_base extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename genType> 
+00056         genType log(
+00057                 genType const & x, 
+00058                 genType const & base);
+00059 
+00061 }//namespace glm
+00062 
+00063 #include "log_base.inl"
+00064 
+00065 #endif//GLM_GTX_log_base
+
+
+ + + diff --git a/doc/api-0.9.2/a00070_source.html b/doc/api-0.9.3/a00066_source.html similarity index 99% rename from doc/api-0.9.2/a00070_source.html rename to doc/api-0.9.3/a00066_source.html index dd476353..603132b5 100644 --- a/doc/api-0.9.2/a00070_source.html +++ b/doc/api-0.9.3/a00066_source.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
man.doxy
+

man.doxy

00001 # Doxyfile 1.7.3
@@ -70,7 +70,7 @@
 00031 # This could be handy for archiving the generated documentation or 
 00032 # if some version control system is used.
 00033 
-00034 PROJECT_NUMBER         = 0.9.2
+00034 PROJECT_NUMBER         = 0.9.3
 00035 
 00036 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 00037 # for a project that appears at the top of each page and should give viewer
@@ -1731,6 +1731,6 @@
 
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00067.html b/doc/api-0.9.3/a00067.html new file mode 100644 index 00000000..71343221 --- /dev/null +++ b/doc/api-0.9.3/a00067.html @@ -0,0 +1,76 @@ + + + + +matrix_access.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_access.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename genType >
genType::col_type column (genType const &m, int index)
template<typename genType >
genType column (genType const &m, int index, typename genType::col_type const &x)
template<typename genType >
genType::row_type row (genType const &m, int index)
template<typename genType >
genType row (genType const &m, int index, typename genType::row_type const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_access: Access matrix rows and columns

+
Date:
2005-12-27 / 2011-05-16
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file matrix_access.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00067_source.html b/doc/api-0.9.3/a00067_source.html new file mode 100644 index 00000000..4fcbcfe9 --- /dev/null +++ b/doc/api-0.9.3/a00067_source.html @@ -0,0 +1,122 @@ + + + + +matrix_access.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_access.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 #ifndef GLM_GTC_matrix_access
+00038 #define GLM_GTC_matrix_access GLM_VERSION
+00039 
+00040 // Dependency:
+00041 #include "../glm.hpp"
+00042 
+00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00044 #       pragma message("GLM: GLM_GTC_matrix_access extension included")
+00045 #endif
+00046 
+00047 namespace glm
+00048 {
+00051 
+00054         template <typename genType> 
+00055         typename genType::row_type row(
+00056                 genType const & m, 
+00057                 int index);
+00058 
+00061     template <typename genType> 
+00062         genType row(
+00063                 genType const & m, 
+00064                 int index, 
+00065                 typename genType::row_type const & x);
+00066 
+00069         template <typename genType> 
+00070         typename genType::col_type column(
+00071                 genType const & m, 
+00072                 int index);
+00073 
+00076         template <typename genType> 
+00077         genType column(
+00078                 genType const & m, 
+00079                 int index, 
+00080                 typename genType::col_type const & x);
+00081 
+00083 }//namespace glm
+00084 
+00085 #include "matrix_access.inl"
+00086 
+00087 #endif//GLM_GTC_matrix_access
+
+
+ + + diff --git a/doc/api-0.9.3/a00068.html b/doc/api-0.9.3/a00068.html new file mode 100644 index 00000000..c23ab4ed --- /dev/null +++ b/doc/api-0.9.3/a00068.html @@ -0,0 +1,74 @@ + + + + +matrix_cross_product.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_cross_product.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T >
detail::tmat3x3< T > matrixCross3 (detail::tvec3< T > const &x)
template<typename T >
detail::tmat4x4< T > matrixCross4 (detail::tvec3< T > const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_cross_product: Cross product matrix form

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file matrix_cross_product.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00068_source.html b/doc/api-0.9.3/a00068_source.html new file mode 100644 index 00000000..e2b63440 --- /dev/null +++ b/doc/api-0.9.3/a00068_source.html @@ -0,0 +1,110 @@ + + + + +matrix_cross_product.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_cross_product.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_matrix_cross_product
+00040 #define GLM_GTX_matrix_cross_product GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         template <typename T> 
+00057         detail::tmat3x3<T> matrixCross3(
+00058                 detail::tvec3<T> const & x);
+00059                 
+00062         template <typename T> 
+00063         detail::tmat4x4<T> matrixCross4(
+00064                 detail::tvec3<T> const & x);
+00065 
+00067 }//namespace glm
+00068 
+00069 #include "matrix_cross_product.inl"
+00070 
+00071 #endif//GLM_GTX_matrix_cross_product
+
+
+ + + diff --git a/doc/api-0.9.3/a00069.html b/doc/api-0.9.3/a00069.html new file mode 100644 index 00000000..bac639bc --- /dev/null +++ b/doc/api-0.9.3/a00069.html @@ -0,0 +1,320 @@ + + + + +matrix_integer.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_integer.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef detail::tmat2x2
+< highp_int > 
highp_imat2
+typedef detail::tmat2x2
+< highp_int > 
highp_imat2x2
+typedef detail::tmat2x3
+< highp_int > 
highp_imat2x3
+typedef detail::tmat2x4
+< highp_int > 
highp_imat2x4
+typedef detail::tmat3x3
+< highp_int > 
highp_imat3
+typedef detail::tmat3x2
+< highp_int > 
highp_imat3x2
+typedef detail::tmat3x3
+< highp_int > 
highp_imat3x3
+typedef detail::tmat3x4
+< highp_int > 
highp_imat3x4
+typedef detail::tmat4x4
+< highp_int > 
highp_imat4
+typedef detail::tmat4x2
+< highp_int > 
highp_imat4x2
+typedef detail::tmat4x3
+< highp_int > 
highp_imat4x3
+typedef detail::tmat4x4
+< highp_int > 
highp_imat4x4
+typedef detail::tmat2x2
+< highp_uint > 
highp_umat2
+typedef detail::tmat2x2
+< highp_uint > 
highp_umat2x2
+typedef detail::tmat2x3
+< highp_uint > 
highp_umat2x3
+typedef detail::tmat2x4
+< highp_uint > 
highp_umat2x4
+typedef detail::tmat3x3
+< highp_uint > 
highp_umat3
+typedef detail::tmat3x2
+< highp_uint > 
highp_umat3x2
+typedef detail::tmat3x3
+< highp_uint > 
highp_umat3x3
+typedef detail::tmat3x4
+< highp_uint > 
highp_umat3x4
+typedef detail::tmat4x4
+< highp_uint > 
highp_umat4
+typedef detail::tmat4x2
+< highp_uint > 
highp_umat4x2
+typedef detail::tmat4x3
+< highp_uint > 
highp_umat4x3
+typedef detail::tmat4x4
+< highp_uint > 
highp_umat4x4
+typedef mediump_imat2 imat2
+typedef mediump_imat2x2 imat2x2
+typedef mediump_imat2x3 imat2x3
+typedef mediump_imat2x4 imat2x4
+typedef mediump_imat3 imat3
+typedef mediump_imat3x2 imat3x2
+typedef mediump_imat3x3 imat3x3
+typedef mediump_imat3x4 imat3x4
+typedef mediump_imat4 imat4
+typedef mediump_imat4x2 imat4x2
+typedef mediump_imat4x3 imat4x3
+typedef mediump_imat4x4 imat4x4
+typedef detail::tmat2x2< lowp_int > lowp_imat2
+typedef detail::tmat2x2< lowp_int > lowp_imat2x2
+typedef detail::tmat2x3< lowp_int > lowp_imat2x3
+typedef detail::tmat2x4< lowp_int > lowp_imat2x4
+typedef detail::tmat3x3< lowp_int > lowp_imat3
+typedef detail::tmat3x2< lowp_int > lowp_imat3x2
+typedef detail::tmat3x3< lowp_int > lowp_imat3x3
+typedef detail::tmat3x4< lowp_int > lowp_imat3x4
+typedef detail::tmat4x4< lowp_int > lowp_imat4
+typedef detail::tmat4x2< lowp_int > lowp_imat4x2
+typedef detail::tmat4x3< lowp_int > lowp_imat4x3
+typedef detail::tmat4x4< lowp_int > lowp_imat4x4
+typedef detail::tmat2x2
+< lowp_uint > 
lowp_umat2
+typedef detail::tmat2x2
+< lowp_uint > 
lowp_umat2x2
+typedef detail::tmat2x3
+< lowp_uint > 
lowp_umat2x3
+typedef detail::tmat2x4
+< lowp_uint > 
lowp_umat2x4
+typedef detail::tmat3x3
+< lowp_uint > 
lowp_umat3
+typedef detail::tmat3x2
+< lowp_uint > 
lowp_umat3x2
+typedef detail::tmat3x3
+< lowp_uint > 
lowp_umat3x3
+typedef detail::tmat3x4
+< lowp_uint > 
lowp_umat3x4
+typedef detail::tmat4x4
+< lowp_uint > 
lowp_umat4
+typedef detail::tmat4x2
+< lowp_uint > 
lowp_umat4x2
+typedef detail::tmat4x3
+< lowp_uint > 
lowp_umat4x3
+typedef detail::tmat4x4
+< lowp_uint > 
lowp_umat4x4
+typedef detail::tmat2x2
+< mediump_int > 
mediump_imat2
+typedef detail::tmat2x2
+< mediump_int > 
mediump_imat2x2
+typedef detail::tmat2x3
+< mediump_int > 
mediump_imat2x3
+typedef detail::tmat2x4
+< mediump_int > 
mediump_imat2x4
+typedef detail::tmat3x3
+< mediump_int > 
mediump_imat3
+typedef detail::tmat3x2
+< mediump_int > 
mediump_imat3x2
+typedef detail::tmat3x3
+< mediump_int > 
mediump_imat3x3
+typedef detail::tmat3x4
+< mediump_int > 
mediump_imat3x4
+typedef detail::tmat4x4
+< mediump_int > 
mediump_imat4
+typedef detail::tmat4x2
+< mediump_int > 
mediump_imat4x2
+typedef detail::tmat4x3
+< mediump_int > 
mediump_imat4x3
+typedef detail::tmat4x4
+< mediump_int > 
mediump_imat4x4
+typedef detail::tmat2x2
+< mediump_uint > 
mediump_umat2
+typedef detail::tmat2x2
+< mediump_uint > 
mediump_umat2x2
+typedef detail::tmat2x3
+< mediump_uint > 
mediump_umat2x3
+typedef detail::tmat2x4
+< mediump_uint > 
mediump_umat2x4
+typedef detail::tmat3x3
+< mediump_uint > 
mediump_umat3
+typedef detail::tmat3x2
+< mediump_uint > 
mediump_umat3x2
+typedef detail::tmat3x3
+< mediump_uint > 
mediump_umat3x3
+typedef detail::tmat3x4
+< mediump_uint > 
mediump_umat3x4
+typedef detail::tmat4x4
+< mediump_uint > 
mediump_umat4
+typedef detail::tmat4x2
+< mediump_uint > 
mediump_umat4x2
+typedef detail::tmat4x3
+< mediump_uint > 
mediump_umat4x3
+typedef detail::tmat4x4
+< mediump_uint > 
mediump_umat4x4
+typedef mediump_umat2 umat2
+typedef mediump_umat2x2 umat2x2
+typedef mediump_umat2x3 umat2x3
+typedef mediump_umat2x4 umat2x4
+typedef mediump_umat3 umat3
+typedef mediump_umat3x2 umat3x2
+typedef mediump_umat3x3 umat3x3
+typedef mediump_umat3x4 umat3x4
+typedef mediump_umat4 umat4
+typedef mediump_umat4x2 umat4x2
+typedef mediump_umat4x3 umat4x3
+typedef mediump_umat4x4 umat4x4
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_integer: Integer matrix types

+
Date:
2011-01-20 / 2011-06-05
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file matrix_integer.hpp.

+
+ + + diff --git a/doc/api-0.9.2/a00073_source.html b/doc/api-0.9.3/a00069_source.html similarity index 53% rename from doc/api-0.9.2/a00073_source.html rename to doc/api-0.9.3/a00069_source.html index 06eca8ce..248d39ef 100644 --- a/doc/api-0.9.2/a00073_source.html +++ b/doc/api-0.9.3/a00069_source.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
matrix_integer.hpp
+

matrix_integer.hpp

-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2011-01-20
-00005 // Updated : 2011-01-20
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/gtc/matrix_integer.hpp
-00009 // Dependency:
-00010 // - GLM core
-00012 
-00013 #ifndef glm_gtc_matrix_integer
-00014 #define glm_gtc_matrix_integer
-00015 
-00016 // Dependency:
-00017 #include "../glm.hpp"
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
 00018 
-00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
-00020 #       pragma message("GLM: GLM_GTC_matrix_integer extension included")
-00021 #endif
-00022 
-00023 namespace glm{
-00024 namespace gtc{
-00025 namespace matrix_integer 
-00026 {
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
 00029 
-00030         typedef detail::tmat2x2<highp_int>                              highp_imat2;    
-00031         typedef detail::tmat3x3<highp_int>                              highp_imat3;    
-00032         typedef detail::tmat4x4<highp_int>                              highp_imat4;    
+00030 
+00031 
+00032 
 00033 
-00034         typedef detail::tmat2x2<highp_int>                              highp_imat2x2; 
-00035         typedef detail::tmat2x3<highp_int>                              highp_imat2x3; 
-00036         typedef detail::tmat2x4<highp_int>                              highp_imat2x4; 
-00037         typedef detail::tmat3x2<highp_int>                              highp_imat3x2; 
-00038         typedef detail::tmat3x3<highp_int>                              highp_imat3x3; 
-00039         typedef detail::tmat3x4<highp_int>                              highp_imat3x4; 
-00040         typedef detail::tmat4x2<highp_int>                              highp_imat4x2; 
-00041         typedef detail::tmat4x3<highp_int>                              highp_imat4x3; 
-00042         typedef detail::tmat4x4<highp_int>                              highp_imat4x4; 
-00043 
-00044         typedef detail::tmat2x2<mediump_int>                    mediump_imat2;  
-00045         typedef detail::tmat3x3<mediump_int>                    mediump_imat3;  
-00046         typedef detail::tmat4x4<mediump_int>                    mediump_imat4;  
-00047 
-00048         typedef detail::tmat2x2<mediump_int>                    mediump_imat2x2; 
-00049         typedef detail::tmat2x3<mediump_int>                    mediump_imat2x3; 
-00050         typedef detail::tmat2x4<mediump_int>                    mediump_imat2x4; 
-00051         typedef detail::tmat3x2<mediump_int>                    mediump_imat3x2; 
-00052         typedef detail::tmat3x3<mediump_int>                    mediump_imat3x3; 
-00053         typedef detail::tmat3x4<mediump_int>                    mediump_imat3x4; 
-00054         typedef detail::tmat4x2<mediump_int>                    mediump_imat4x2; 
-00055         typedef detail::tmat4x3<mediump_int>                    mediump_imat4x3; 
-00056         typedef detail::tmat4x4<mediump_int>                    mediump_imat4x4; 
-00057 
-00058         typedef detail::tmat2x2<lowp_int>                               lowp_imat2;     
-00059         typedef detail::tmat3x3<lowp_int>                               lowp_imat3;     
-00060         typedef detail::tmat4x4<lowp_int>                               lowp_imat4;     
-00061 
-00062         typedef detail::tmat2x2<lowp_int>                               lowp_imat2x2; 
-00063         typedef detail::tmat2x3<lowp_int>                               lowp_imat2x3; 
-00064         typedef detail::tmat2x4<lowp_int>                               lowp_imat2x4; 
-00065         typedef detail::tmat3x2<lowp_int>                               lowp_imat3x2; 
-00066         typedef detail::tmat3x3<lowp_int>                               lowp_imat3x3; 
-00067         typedef detail::tmat3x4<lowp_int>                               lowp_imat3x4; 
-00068         typedef detail::tmat4x2<lowp_int>                               lowp_imat4x2; 
-00069         typedef detail::tmat4x3<lowp_int>                               lowp_imat4x3; 
-00070         typedef detail::tmat4x4<lowp_int>                               lowp_imat4x4; 
-00071 
-00072         typedef detail::tmat2x2<highp_uint>                             highp_umat2; 
-00073         typedef detail::tmat3x3<highp_uint>                             highp_umat3; 
-00074         typedef detail::tmat4x4<highp_uint>                             highp_umat4; 
-00075 
-00076         typedef detail::tmat2x2<highp_uint>                             highp_umat2x2; 
-00077         typedef detail::tmat2x3<highp_uint>                             highp_umat2x3; 
-00078         typedef detail::tmat2x4<highp_uint>                             highp_umat2x4; 
-00079         typedef detail::tmat3x2<highp_uint>                             highp_umat3x2; 
-00080         typedef detail::tmat3x3<highp_uint>                             highp_umat3x3; 
-00081         typedef detail::tmat3x4<highp_uint>                             highp_umat3x4; 
-00082         typedef detail::tmat4x2<highp_uint>                             highp_umat4x2; 
-00083         typedef detail::tmat4x3<highp_uint>                             highp_umat4x3; 
-00084         typedef detail::tmat4x4<highp_uint>                             highp_umat4x4; 
-00085 
-00086         typedef detail::tmat2x2<mediump_uint>                   mediump_umat2; 
-00087         typedef detail::tmat3x3<mediump_uint>                   mediump_umat3; 
-00088         typedef detail::tmat4x4<mediump_uint>                   mediump_umat4; 
-00089 
-00090         typedef detail::tmat2x2<mediump_uint>                   mediump_umat2x2; 
-00091         typedef detail::tmat2x3<mediump_uint>                   mediump_umat2x3; 
-00092         typedef detail::tmat2x4<mediump_uint>                   mediump_umat2x4; 
-00093         typedef detail::tmat3x2<mediump_uint>                   mediump_umat3x2; 
-00094         typedef detail::tmat3x3<mediump_uint>                   mediump_umat3x3; 
-00095         typedef detail::tmat3x4<mediump_uint>                   mediump_umat3x4; 
-00096         typedef detail::tmat4x2<mediump_uint>                   mediump_umat4x2; 
-00097         typedef detail::tmat4x3<mediump_uint>                   mediump_umat4x3; 
-00098         typedef detail::tmat4x4<mediump_uint>                   mediump_umat4x4; 
-00099 
-00100         typedef detail::tmat2x2<lowp_uint>                              lowp_umat2;     
-00101         typedef detail::tmat3x3<lowp_uint>                              lowp_umat3;     
-00102         typedef detail::tmat4x4<lowp_uint>                              lowp_umat4;     
-00103 
-00104         typedef detail::tmat2x2<lowp_uint>                              lowp_umat2x2; 
-00105         typedef detail::tmat2x3<lowp_uint>                              lowp_umat2x3; 
-00106         typedef detail::tmat2x4<lowp_uint>                              lowp_umat2x4; 
-00107         typedef detail::tmat3x2<lowp_uint>                              lowp_umat3x2; 
-00108         typedef detail::tmat3x3<lowp_uint>                              lowp_umat3x3; 
-00109         typedef detail::tmat3x4<lowp_uint>                              lowp_umat3x4; 
-00110         typedef detail::tmat4x2<lowp_uint>                              lowp_umat4x2; 
-00111         typedef detail::tmat4x3<lowp_uint>                              lowp_umat4x3; 
-00112         typedef detail::tmat4x4<lowp_uint>                              lowp_umat4x4; 
-00113 
-00114 #if(defined(GLM_PRECISION_HIGHP_INT))
-00115         typedef highp_imat2                                                             imat2; 
-00116         typedef highp_imat3                                                             imat3; 
-00117         typedef highp_imat4                                                             imat4; 
-00118         typedef highp_imat2x2                                                   imat2x2; 
-00119         typedef highp_imat2x3                                                   imat2x3; 
-00120         typedef highp_imat2x4                                                   imat2x4; 
-00121         typedef highp_imat3x2                                                   imat3x2; 
-00122         typedef highp_imat3x3                                                   imat3x3; 
-00123         typedef highp_imat3x4                                                   imat3x4; 
-00124         typedef highp_imat4x2                                                   imat4x2; 
-00125         typedef highp_imat4x3                                                   imat4x3; 
-00126         typedef highp_imat4x4                                                   imat4x4; 
-00127 #elif(defined(GLM_PRECISION_LOWP_INT))
-00128         typedef lowp_imat2                                                              imat2; 
-00129         typedef lowp_imat3                                                              imat3; 
-00130         typedef lowp_imat4                                                              imat4; 
-00131         typedef lowp_imat2x2                                                    imat2x2; 
-00132         typedef lowp_imat2x3                                                    imat2x3; 
-00133         typedef lowp_imat2x4                                                    imat2x4; 
-00134         typedef lowp_imat3x2                                                    imat3x2; 
-00135         typedef lowp_imat3x3                                                    imat3x3; 
-00136         typedef lowp_imat3x4                                                    imat3x4; 
-00137         typedef lowp_imat4x2                                                    imat4x2; 
-00138         typedef lowp_imat4x3                                                    imat4x3; 
-00139         typedef lowp_imat4x4                                                    imat4x4; 
-00140 #else //if(defined(GLM_PRECISION_MEDIUMP_INT))
-00141         typedef mediump_imat2                                                   imat2; 
-00142         typedef mediump_imat3                                                   imat3; 
-00143         typedef mediump_imat4                                                   imat4; 
-00144         typedef mediump_imat2x2                                                 imat2x2; 
-00145         typedef mediump_imat2x3                                                 imat2x3; 
-00146         typedef mediump_imat2x4                                                 imat2x4; 
-00147         typedef mediump_imat3x2                                                 imat3x2; 
-00148         typedef mediump_imat3x3                                                 imat3x3; 
-00149         typedef mediump_imat3x4                                                 imat3x4; 
-00150         typedef mediump_imat4x2                                                 imat4x2; 
-00151         typedef mediump_imat4x3                                                 imat4x3; 
-00152         typedef mediump_imat4x4                                                 imat4x4; 
-00153 #endif//GLM_PRECISION
-00154 
-00155 #if(defined(GLM_PRECISION_HIGHP_UINT))
-00156         typedef highp_umat2                                                             umat2; 
-00157         typedef highp_umat3                                                             umat3; 
-00158         typedef highp_umat4                                                             umat4; 
-00159         typedef highp_umat2x2                                                   umat2x2; 
-00160         typedef highp_umat2x3                                                   umat2x3; 
-00161         typedef highp_umat2x4                                                   umat2x4; 
-00162         typedef highp_umat3x2                                                   umat3x2; 
-00163         typedef highp_umat3x3                                                   umat3x3; 
-00164         typedef highp_umat3x4                                                   umat3x4; 
-00165         typedef highp_umat4x2                                                   umat4x2; 
-00166         typedef highp_umat4x3                                                   umat4x3; 
-00167         typedef highp_umat4x4                                                   umat4x4; 
-00168 #elif(defined(GLM_PRECISION_LOWP_UINT))
-00169         typedef lowp_umat2                                                              umat2; 
-00170         typedef lowp_umat3                                                              umat3; 
-00171         typedef lowp_umat4                                                              umat4; 
-00172         typedef lowp_umat2x2                                                    umat2x2; 
-00173         typedef lowp_umat2x3                                                    umat2x3; 
-00174         typedef lowp_umat2x4                                                    umat2x4; 
-00175         typedef lowp_umat3x2                                                    umat3x2; 
-00176         typedef lowp_umat3x3                                                    umat3x3; 
-00177         typedef lowp_umat3x4                                                    umat3x4; 
-00178         typedef lowp_umat4x2                                                    umat4x2; 
-00179         typedef lowp_umat4x3                                                    umat4x3; 
-00180         typedef lowp_umat4x4                                                    umat4x4; 
-00181 #else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
-00182         typedef mediump_umat2                                                   umat2; 
-00183         typedef mediump_umat3                                                   umat3; 
-00184         typedef mediump_umat4                                                   umat4; 
-00185         typedef mediump_umat2x2                                                 umat2x2; 
-00186         typedef mediump_umat2x3                                                 umat2x3; 
-00187         typedef mediump_umat2x4                                                 umat2x4; 
-00188         typedef mediump_umat3x2                                                 umat3x2; 
-00189         typedef mediump_umat3x3                                                 umat3x3; 
-00190         typedef mediump_umat3x4                                                 umat3x4; 
-00191         typedef mediump_umat4x2                                                 umat4x2; 
-00192         typedef mediump_umat4x3                                                 umat4x3; 
-00193         typedef mediump_umat4x4                                                 umat4x4; 
-00194 #endif//GLM_PRECISION
-00195 
-00197 
-00198 }//namespace matrix_integer
-00199 }//namespace gtc
-00200 }//namespace glm
-00201 
-00202 namespace glm{using namespace gtc::matrix_integer;}
-00203 
-00204 #endif//glm_gtc_matrix_integer
+00034 
+00035 
+00036 
+00037 #ifndef GLM_GTC_matrix_integer
+00038 #define GLM_GTC_matrix_integer GLM_VERSION
+00039 
+00040 // Dependency:
+00041 #include "../glm.hpp"
+00042 
+00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00044 #       pragma message("GLM: GLM_GTC_matrix_integer extension included")
+00045 #endif
+00046 
+00047 namespace glm
+00048 {
+00051 
+00052         typedef detail::tmat2x2<highp_int>                              highp_imat2;    
+00053         typedef detail::tmat3x3<highp_int>                              highp_imat3;    
+00054         typedef detail::tmat4x4<highp_int>                              highp_imat4;    
+00055 
+00056         typedef detail::tmat2x2<highp_int>                              highp_imat2x2; 
+00057         typedef detail::tmat2x3<highp_int>                              highp_imat2x3; 
+00058         typedef detail::tmat2x4<highp_int>                              highp_imat2x4; 
+00059         typedef detail::tmat3x2<highp_int>                              highp_imat3x2; 
+00060         typedef detail::tmat3x3<highp_int>                              highp_imat3x3; 
+00061         typedef detail::tmat3x4<highp_int>                              highp_imat3x4; 
+00062         typedef detail::tmat4x2<highp_int>                              highp_imat4x2; 
+00063         typedef detail::tmat4x3<highp_int>                              highp_imat4x3; 
+00064         typedef detail::tmat4x4<highp_int>                              highp_imat4x4; 
+00065 
+00066         typedef detail::tmat2x2<mediump_int>                    mediump_imat2;  
+00067         typedef detail::tmat3x3<mediump_int>                    mediump_imat3;  
+00068         typedef detail::tmat4x4<mediump_int>                    mediump_imat4;  
+00069 
+00070         typedef detail::tmat2x2<mediump_int>                    mediump_imat2x2; 
+00071         typedef detail::tmat2x3<mediump_int>                    mediump_imat2x3; 
+00072         typedef detail::tmat2x4<mediump_int>                    mediump_imat2x4; 
+00073         typedef detail::tmat3x2<mediump_int>                    mediump_imat3x2; 
+00074         typedef detail::tmat3x3<mediump_int>                    mediump_imat3x3; 
+00075         typedef detail::tmat3x4<mediump_int>                    mediump_imat3x4; 
+00076         typedef detail::tmat4x2<mediump_int>                    mediump_imat4x2; 
+00077         typedef detail::tmat4x3<mediump_int>                    mediump_imat4x3; 
+00078         typedef detail::tmat4x4<mediump_int>                    mediump_imat4x4; 
+00079 
+00080         typedef detail::tmat2x2<lowp_int>                               lowp_imat2;     
+00081         typedef detail::tmat3x3<lowp_int>                               lowp_imat3;     
+00082         typedef detail::tmat4x4<lowp_int>                               lowp_imat4;     
+00083 
+00084         typedef detail::tmat2x2<lowp_int>                               lowp_imat2x2; 
+00085         typedef detail::tmat2x3<lowp_int>                               lowp_imat2x3; 
+00086         typedef detail::tmat2x4<lowp_int>                               lowp_imat2x4; 
+00087         typedef detail::tmat3x2<lowp_int>                               lowp_imat3x2; 
+00088         typedef detail::tmat3x3<lowp_int>                               lowp_imat3x3; 
+00089         typedef detail::tmat3x4<lowp_int>                               lowp_imat3x4; 
+00090         typedef detail::tmat4x2<lowp_int>                               lowp_imat4x2; 
+00091         typedef detail::tmat4x3<lowp_int>                               lowp_imat4x3; 
+00092         typedef detail::tmat4x4<lowp_int>                               lowp_imat4x4; 
+00093 
+00094         typedef detail::tmat2x2<highp_uint>                             highp_umat2; 
+00095         typedef detail::tmat3x3<highp_uint>                             highp_umat3; 
+00096         typedef detail::tmat4x4<highp_uint>                             highp_umat4; 
+00097 
+00098         typedef detail::tmat2x2<highp_uint>                             highp_umat2x2; 
+00099         typedef detail::tmat2x3<highp_uint>                             highp_umat2x3; 
+00100         typedef detail::tmat2x4<highp_uint>                             highp_umat2x4; 
+00101         typedef detail::tmat3x2<highp_uint>                             highp_umat3x2; 
+00102         typedef detail::tmat3x3<highp_uint>                             highp_umat3x3; 
+00103         typedef detail::tmat3x4<highp_uint>                             highp_umat3x4; 
+00104         typedef detail::tmat4x2<highp_uint>                             highp_umat4x2; 
+00105         typedef detail::tmat4x3<highp_uint>                             highp_umat4x3; 
+00106         typedef detail::tmat4x4<highp_uint>                             highp_umat4x4; 
+00107 
+00108         typedef detail::tmat2x2<mediump_uint>                   mediump_umat2; 
+00109         typedef detail::tmat3x3<mediump_uint>                   mediump_umat3; 
+00110         typedef detail::tmat4x4<mediump_uint>                   mediump_umat4; 
+00111 
+00112         typedef detail::tmat2x2<mediump_uint>                   mediump_umat2x2; 
+00113         typedef detail::tmat2x3<mediump_uint>                   mediump_umat2x3; 
+00114         typedef detail::tmat2x4<mediump_uint>                   mediump_umat2x4; 
+00115         typedef detail::tmat3x2<mediump_uint>                   mediump_umat3x2; 
+00116         typedef detail::tmat3x3<mediump_uint>                   mediump_umat3x3; 
+00117         typedef detail::tmat3x4<mediump_uint>                   mediump_umat3x4; 
+00118         typedef detail::tmat4x2<mediump_uint>                   mediump_umat4x2; 
+00119         typedef detail::tmat4x3<mediump_uint>                   mediump_umat4x3; 
+00120         typedef detail::tmat4x4<mediump_uint>                   mediump_umat4x4; 
+00121 
+00122         typedef detail::tmat2x2<lowp_uint>                              lowp_umat2;     
+00123         typedef detail::tmat3x3<lowp_uint>                              lowp_umat3;     
+00124         typedef detail::tmat4x4<lowp_uint>                              lowp_umat4;     
+00125 
+00126         typedef detail::tmat2x2<lowp_uint>                              lowp_umat2x2; 
+00127         typedef detail::tmat2x3<lowp_uint>                              lowp_umat2x3; 
+00128         typedef detail::tmat2x4<lowp_uint>                              lowp_umat2x4; 
+00129         typedef detail::tmat3x2<lowp_uint>                              lowp_umat3x2; 
+00130         typedef detail::tmat3x3<lowp_uint>                              lowp_umat3x3; 
+00131         typedef detail::tmat3x4<lowp_uint>                              lowp_umat3x4; 
+00132         typedef detail::tmat4x2<lowp_uint>                              lowp_umat4x2; 
+00133         typedef detail::tmat4x3<lowp_uint>                              lowp_umat4x3; 
+00134         typedef detail::tmat4x4<lowp_uint>                              lowp_umat4x4; 
+00135 
+00136 #if(defined(GLM_PRECISION_HIGHP_INT))
+00137         typedef highp_imat2                                                             imat2; 
+00138         typedef highp_imat3                                                             imat3; 
+00139         typedef highp_imat4                                                             imat4; 
+00140         typedef highp_imat2x2                                                   imat2x2; 
+00141         typedef highp_imat2x3                                                   imat2x3; 
+00142         typedef highp_imat2x4                                                   imat2x4; 
+00143         typedef highp_imat3x2                                                   imat3x2; 
+00144         typedef highp_imat3x3                                                   imat3x3; 
+00145         typedef highp_imat3x4                                                   imat3x4; 
+00146         typedef highp_imat4x2                                                   imat4x2; 
+00147         typedef highp_imat4x3                                                   imat4x3; 
+00148         typedef highp_imat4x4                                                   imat4x4; 
+00149 #elif(defined(GLM_PRECISION_LOWP_INT))
+00150         typedef lowp_imat2                                                              imat2; 
+00151         typedef lowp_imat3                                                              imat3; 
+00152         typedef lowp_imat4                                                              imat4; 
+00153         typedef lowp_imat2x2                                                    imat2x2; 
+00154         typedef lowp_imat2x3                                                    imat2x3; 
+00155         typedef lowp_imat2x4                                                    imat2x4; 
+00156         typedef lowp_imat3x2                                                    imat3x2; 
+00157         typedef lowp_imat3x3                                                    imat3x3; 
+00158         typedef lowp_imat3x4                                                    imat3x4; 
+00159         typedef lowp_imat4x2                                                    imat4x2; 
+00160         typedef lowp_imat4x3                                                    imat4x3; 
+00161         typedef lowp_imat4x4                                                    imat4x4; 
+00162 #else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+00163         typedef mediump_imat2                                                   imat2; 
+00164         typedef mediump_imat3                                                   imat3; 
+00165         typedef mediump_imat4                                                   imat4; 
+00166         typedef mediump_imat2x2                                                 imat2x2; 
+00167         typedef mediump_imat2x3                                                 imat2x3; 
+00168         typedef mediump_imat2x4                                                 imat2x4; 
+00169         typedef mediump_imat3x2                                                 imat3x2; 
+00170         typedef mediump_imat3x3                                                 imat3x3; 
+00171         typedef mediump_imat3x4                                                 imat3x4; 
+00172         typedef mediump_imat4x2                                                 imat4x2; 
+00173         typedef mediump_imat4x3                                                 imat4x3; 
+00174         typedef mediump_imat4x4                                                 imat4x4; 
+00175 #endif//GLM_PRECISION
+00176 
+00177 #if(defined(GLM_PRECISION_HIGHP_UINT))
+00178         typedef highp_umat2                                                             umat2; 
+00179         typedef highp_umat3                                                             umat3; 
+00180         typedef highp_umat4                                                             umat4; 
+00181         typedef highp_umat2x2                                                   umat2x2; 
+00182         typedef highp_umat2x3                                                   umat2x3; 
+00183         typedef highp_umat2x4                                                   umat2x4; 
+00184         typedef highp_umat3x2                                                   umat3x2; 
+00185         typedef highp_umat3x3                                                   umat3x3; 
+00186         typedef highp_umat3x4                                                   umat3x4; 
+00187         typedef highp_umat4x2                                                   umat4x2; 
+00188         typedef highp_umat4x3                                                   umat4x3; 
+00189         typedef highp_umat4x4                                                   umat4x4; 
+00190 #elif(defined(GLM_PRECISION_LOWP_UINT))
+00191         typedef lowp_umat2                                                              umat2; 
+00192         typedef lowp_umat3                                                              umat3; 
+00193         typedef lowp_umat4                                                              umat4; 
+00194         typedef lowp_umat2x2                                                    umat2x2; 
+00195         typedef lowp_umat2x3                                                    umat2x3; 
+00196         typedef lowp_umat2x4                                                    umat2x4; 
+00197         typedef lowp_umat3x2                                                    umat3x2; 
+00198         typedef lowp_umat3x3                                                    umat3x3; 
+00199         typedef lowp_umat3x4                                                    umat3x4; 
+00200         typedef lowp_umat4x2                                                    umat4x2; 
+00201         typedef lowp_umat4x3                                                    umat4x3; 
+00202         typedef lowp_umat4x4                                                    umat4x4; 
+00203 #else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+00204         typedef mediump_umat2                                                   umat2; 
+00205         typedef mediump_umat3                                                   umat3; 
+00206         typedef mediump_umat4                                                   umat4; 
+00207         typedef mediump_umat2x2                                                 umat2x2; 
+00208         typedef mediump_umat2x3                                                 umat2x3; 
+00209         typedef mediump_umat2x4                                                 umat2x4; 
+00210         typedef mediump_umat3x2                                                 umat3x2; 
+00211         typedef mediump_umat3x3                                                 umat3x3; 
+00212         typedef mediump_umat3x4                                                 umat3x4; 
+00213         typedef mediump_umat4x2                                                 umat4x2; 
+00214         typedef mediump_umat4x3                                                 umat4x3; 
+00215         typedef mediump_umat4x4                                                 umat4x4; 
+00216 #endif//GLM_PRECISION
+00217 
+00219 }//namespace glm
+00220 
+00221 #endif//GLM_GTC_matrix_integer
 
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00070.html b/doc/api-0.9.3/a00070.html new file mode 100644 index 00000000..b96c6feb --- /dev/null +++ b/doc/api-0.9.3/a00070.html @@ -0,0 +1,74 @@ + + + + +matrix_interpolation.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_interpolation.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T >
void axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle)
template<typename T >
detail::tmat4x4< T > axisAngleMatrix (detail::tvec3< T > const &axis, T const angle)
template<typename T >
detail::tmat4x4< T > interpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_interpolation: Rotation and translation matrix interpolation

+
Date:
2011-03-05 / 2011-06-07
+
Author:
Ghenadii Ursachi (the.asteroth@gmail.com)
+
See also:
GLM Core (dependence)
+ +

Definition in file matrix_interpolation.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00070_source.html b/doc/api-0.9.3/a00070_source.html new file mode 100644 index 00000000..c8dd5773 --- /dev/null +++ b/doc/api-0.9.3/a00070_source.html @@ -0,0 +1,118 @@ + + + + +matrix_interpolation.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_interpolation.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_matrix_interpolation
+00039 #define GLM_GTX_matrix_interpolation GLM_VERSION
+00040 
+00041 // Dependency:
+00042 //#include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_matrix_interpolation extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename T>
+00056     void axisAngle(
+00057         detail::tmat4x4<T> const & mat,
+00058         detail::tvec3<T> & axis,
+00059         T & angle);
+00060 
+00063         template <typename T>
+00064     detail::tmat4x4<T> axisAngleMatrix(
+00065         detail::tvec3<T> const & axis,
+00066         T const angle);
+00067 
+00071         template <typename T>
+00072     detail::tmat4x4<T> interpolate(
+00073         detail::tmat4x4<T> const & m1,
+00074         detail::tmat4x4<T> const & m2,
+00075         T const delta);
+00076 
+00078 }//namespace glm
+00079 
+00080 #include "matrix_interpolation.inl"
+00081 
+00082 #endif//GLM_GTX_matrix_interpolation
+
+
+ + + diff --git a/doc/api-0.9.3/a00071.html b/doc/api-0.9.3/a00071.html new file mode 100644 index 00000000..0dd36326 --- /dev/null +++ b/doc/api-0.9.3/a00071.html @@ -0,0 +1,73 @@ + + + + +matrix_inverse.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_inverse.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genType >
genType affineInverse (genType const &m)
template<typename genType >
GLM_FUNC_QUALIFIER
+genType::value_type 
inverseTranspose (genType const &m)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_inverse: Additional matrix inverse function

+
Date:
2005-12-21 / 2011-06-05
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file matrix_inverse.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00071_source.html b/doc/api-0.9.3/a00071_source.html new file mode 100644 index 00000000..445abbc8 --- /dev/null +++ b/doc/api-0.9.3/a00071_source.html @@ -0,0 +1,107 @@ + + + + +matrix_inverse.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_inverse.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 #ifndef GLM_GTC_matrix_inverse
+00038 #define GLM_GTC_matrix_inverse GLM_VERSION
+00039 
+00040 // Dependency:
+00041 #include "../glm.hpp"
+00042 
+00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00044 #       pragma message("GLM: GLM_GTC_matrix_inverse extension included")
+00045 #endif
+00046 
+00047 namespace glm
+00048 {
+00051 
+00057         template <typename genType> 
+00058         genType affineInverse(genType const & m);
+00059 
+00065         template <typename genType> 
+00066         GLM_FUNC_QUALIFIER typename genType::value_type inverseTranspose(
+00067                 genType const & m);
+00068 
+00070 }//namespace glm
+00071 
+00072 #include "matrix_inverse.inl"
+00073 
+00074 #endif//GLM_GTC_matrix_inverse
+
+
+ + + diff --git a/doc/api-0.9.3/a00072.html b/doc/api-0.9.3/a00072.html new file mode 100644 index 00000000..53534486 --- /dev/null +++ b/doc/api-0.9.3/a00072.html @@ -0,0 +1,94 @@ + + + + +matrix_major_storage.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_major_storage.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
detail::tmat2x2< T > colMajor2 (detail::tvec2< T > const &v1, detail::tvec2< T > const &v2)
template<typename T >
detail::tmat2x2< T > colMajor2 (detail::tmat2x2< T > const &m)
template<typename T >
detail::tmat3x3< T > colMajor3 (detail::tvec3< T > const &v1, detail::tvec3< T > const &v2, detail::tvec3< T > const &v3)
template<typename T >
detail::tmat3x3< T > colMajor3 (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat4x4< T > colMajor4 (detail::tvec4< T > const &v1, detail::tvec4< T > const &v2, detail::tvec4< T > const &v3, detail::tvec4< T > const &v4)
template<typename T >
detail::tmat4x4< T > colMajor4 (detail::tmat4x4< T > const &m)
template<typename T >
detail::tmat2x2< T > rowMajor2 (detail::tmat2x2< T > const &m)
template<typename T >
detail::tmat2x2< T > rowMajor2 (detail::tvec2< T > const &v1, detail::tvec2< T > const &v2)
template<typename T >
detail::tmat3x3< T > rowMajor3 (detail::tvec3< T > const &v1, detail::tvec3< T > const &v2, detail::tvec3< T > const &v3)
template<typename T >
detail::tmat3x3< T > rowMajor3 (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat4x4< T > rowMajor4 (detail::tmat4x4< T > const &m)
template<typename T >
detail::tmat4x4< T > rowMajor4 (detail::tvec4< T > const &v1, detail::tvec4< T > const &v2, detail::tvec4< T > const &v3, detail::tvec4< T > const &v4)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_major_storage: Build matrix

+
Date:
2006-04-19 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file matrix_major_storage.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00072_source.html b/doc/api-0.9.3/a00072_source.html new file mode 100644 index 00000000..6e17cb71 --- /dev/null +++ b/doc/api-0.9.3/a00072_source.html @@ -0,0 +1,162 @@ + + + + +matrix_major_storage.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_major_storage.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_matrix_major_storage
+00040 #define GLM_GTX_matrix_major_storage GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         template <typename T> 
+00057         detail::tmat2x2<T> rowMajor2(
+00058                 detail::tvec2<T> const & v1, 
+00059                 detail::tvec2<T> const & v2);
+00060                 
+00063         template <typename T> 
+00064         detail::tmat2x2<T> rowMajor2(
+00065                 detail::tmat2x2<T> const & m);
+00066 
+00069         template <typename T> 
+00070         detail::tmat3x3<T> rowMajor3(
+00071                 detail::tvec3<T> const & v1, 
+00072                 detail::tvec3<T> const & v2, 
+00073                 detail::tvec3<T> const & v3);
+00074 
+00077         template <typename T> 
+00078         detail::tmat3x3<T> rowMajor3(
+00079                 detail::tmat3x3<T> const & m);
+00080 
+00083         template <typename T> 
+00084         detail::tmat4x4<T> rowMajor4(
+00085                 detail::tvec4<T> const & v1, 
+00086                 detail::tvec4<T> const & v2,
+00087                 detail::tvec4<T> const & v3, 
+00088                 detail::tvec4<T> const & v4);
+00089 
+00092         template <typename T> 
+00093         detail::tmat4x4<T> rowMajor4(
+00094                 detail::tmat4x4<T> const & m);
+00095 
+00098         template <typename T> 
+00099         detail::tmat2x2<T> colMajor2(
+00100                 detail::tvec2<T> const & v1, 
+00101                 detail::tvec2<T> const & v2);
+00102                 
+00105         template <typename T> 
+00106         detail::tmat2x2<T> colMajor2(
+00107                 detail::tmat2x2<T> const & m);
+00108 
+00111         template <typename T> 
+00112         detail::tmat3x3<T> colMajor3(
+00113                 detail::tvec3<T> const & v1, 
+00114                 detail::tvec3<T> const & v2, 
+00115                 detail::tvec3<T> const & v3);
+00116                 
+00119         template <typename T> 
+00120         detail::tmat3x3<T> colMajor3(
+00121                 detail::tmat3x3<T> const & m);
+00122                 
+00125         template <typename T> 
+00126         detail::tmat4x4<T> colMajor4(
+00127                 detail::tvec4<T> const & v1, 
+00128                 detail::tvec4<T> const & v2, 
+00129                 detail::tvec4<T> const & v3, 
+00130                 detail::tvec4<T> const & v4);
+00131                                 
+00134         template <typename T> 
+00135         detail::tmat4x4<T> colMajor4(
+00136                 detail::tmat4x4<T> const & m);
+00137 
+00139 }//namespace glm
+00140 
+00141 #include "matrix_major_storage.inl"
+00142 
+00143 #endif//GLM_GTX_matrix_major_storage
+
+
+ + + diff --git a/doc/api-0.9.3/a00073.html b/doc/api-0.9.3/a00073.html new file mode 100644 index 00000000..ebc253c3 --- /dev/null +++ b/doc/api-0.9.3/a00073.html @@ -0,0 +1,86 @@ + + + + +matrix_operation.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_operation.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename valType >
detail::tmat2x2< valType > diagonal2x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat2x3< valType > diagonal2x3 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat2x4< valType > diagonal2x4 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat3x2< valType > diagonal3x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat3x3< valType > diagonal3x3 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat3x4< valType > diagonal3x4 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat4x2< valType > diagonal4x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat4x3< valType > diagonal4x3 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat4x4< valType > diagonal4x4 (detail::tvec4< valType > const &v)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_operation: Extended matrix operations

+
Date:
2009-08-29 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file matrix_operation.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00073_source.html b/doc/api-0.9.3/a00073_source.html new file mode 100644 index 00000000..e72d697e --- /dev/null +++ b/doc/api-0.9.3/a00073_source.html @@ -0,0 +1,137 @@ + + + + +matrix_operation.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_operation.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_matrix_operation
+00039 #define GLM_GTX_matrix_operation GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_matrix_operation extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename valType> 
+00056         detail::tmat2x2<valType> diagonal2x2(
+00057                 detail::tvec2<valType> const & v);
+00058 
+00061         template <typename valType> 
+00062         detail::tmat2x3<valType> diagonal2x3(
+00063                 detail::tvec2<valType> const & v);
+00064 
+00067         template <typename valType> 
+00068         detail::tmat2x4<valType> diagonal2x4(
+00069                 detail::tvec2<valType> const & v);
+00070 
+00073         template <typename valType> 
+00074         detail::tmat3x2<valType> diagonal3x2(
+00075                 detail::tvec2<valType> const & v);
+00076 
+00079         template <typename valType> 
+00080         detail::tmat3x3<valType> diagonal3x3(
+00081                 detail::tvec3<valType> const & v);
+00082 
+00085         template <typename valType> 
+00086         detail::tmat3x4<valType> diagonal3x4(
+00087                 detail::tvec3<valType> const & v);
+00088 
+00091         template <typename valType> 
+00092         detail::tmat4x2<valType> diagonal4x2(
+00093                 detail::tvec2<valType> const & v);
+00094 
+00097         template <typename valType> 
+00098         detail::tmat4x3<valType> diagonal4x3(
+00099                 detail::tvec3<valType> const & v);
+00100 
+00103         template <typename valType> 
+00104         detail::tmat4x4<valType> diagonal4x4(
+00105                 detail::tvec4<valType> const & v);
+00106 
+00108 }//namespace glm
+00109 
+00110 #include "matrix_operation.inl"
+00111 
+00112 #endif//GLM_GTX_matrix_operation
+
+
+ + + diff --git a/doc/api-0.9.3/a00074.html b/doc/api-0.9.3/a00074.html new file mode 100644 index 00000000..afe1017c --- /dev/null +++ b/doc/api-0.9.3/a00074.html @@ -0,0 +1,86 @@ + + + + +matrix_query.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_query.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
bool isIdentity (genType const &m, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename T >
bool isNormalized (detail::tmat2x2< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNormalized (detail::tmat4x4< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNormalized (detail::tmat3x3< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (detail::tmat2x2< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (detail::tmat3x3< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (detail::tmat4x4< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename genType >
bool isOrthogonal (genType const &m, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_query: Query matrix properties

+
Date:
2007-03-05 / 2011-08-28
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_vector_query: Vector query (dependence)
+ +

Definition in file matrix_query.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00074_source.html b/doc/api-0.9.3/a00074_source.html new file mode 100644 index 00000000..0b5388f2 --- /dev/null +++ b/doc/api-0.9.3/a00074_source.html @@ -0,0 +1,143 @@ + + + + +matrix_query.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_query.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_matrix_query
+00040 #define GLM_GTX_matrix_query GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/vector_query.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_matrix_query extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template<typename T> 
+00058         bool isNull(
+00059                 detail::tmat2x2<T> const & m, 
+00060                 T const & epsilon = std::numeric_limits<T>::epsilon());
+00061                 
+00064         template<typename T> 
+00065         bool isNull(
+00066                 detail::tmat3x3<T> const & m, 
+00067                 T const & epsilon = std::numeric_limits<T>::epsilon());
+00068                 
+00071         template<typename T> 
+00072         bool isNull(
+00073                 detail::tmat4x4<T> const & m, 
+00074                 T const & epsilon = std::numeric_limits<T>::epsilon());
+00075                         
+00078         template<typename genType> 
+00079         bool isIdentity(
+00080                 genType const & m, 
+00081                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00082 
+00085         template<typename T> 
+00086         bool isNormalized(
+00087                 detail::tmat2x2<T> const & m, 
+00088                 T const & epsilon = std::numeric_limits<T>::epsilon());
+00089                 
+00092         template<typename T> 
+00093         bool isNormalized(
+00094                 detail::tmat3x3<T> const & m, 
+00095                 T const & epsilon = std::numeric_limits<T>::epsilon());
+00096                 
+00099         template<typename T> 
+00100         bool isNormalized(
+00101                 detail::tmat4x4<T> const & m, 
+00102                 T const & epsilon = std::numeric_limits<T>::epsilon());
+00103 
+00106         template<typename genType> 
+00107         bool isOrthogonal(
+00108                 genType const & m, 
+00109                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00110 
+00112 }//namespace glm
+00113 
+00114 #include "matrix_query.inl"
+00115 
+00116 #endif//GLM_GTX_matrix_query
+
+
+ + + diff --git a/doc/api-0.9.3/a00075.html b/doc/api-0.9.3/a00075.html new file mode 100644 index 00000000..d978c8d0 --- /dev/null +++ b/doc/api-0.9.3/a00075.html @@ -0,0 +1,100 @@ + + + + +matrix_transform.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

matrix_transform.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
detail::tmat4x4< T > frustum (T const &left, T const &right, T const &bottom, T const &top, T const &near, T const &far)
template<typename T >
detail::tmat4x4< T > infinitePerspective (T fovy, T aspect, T near)
template<typename T >
detail::tmat4x4< T > lookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const &center, detail::tvec3< T > const &up)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top, T const &zNear, T const &zFar)
template<typename T >
detail::tmat4x4< T > perspective (T const &fovy, T const &aspect, T const &near, T const &far)
template<typename valType >
detail::tmat4x4< valType > perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &near, valType const &far)
template<typename T , typename U >
detail::tmat4x4< T > pickMatrix (detail::tvec2< T > const &center, detail::tvec2< T > const &delta, detail::tvec4< U > const &viewport)
template<typename T , typename U >
detail::tvec3< T > project (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
template<typename T >
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &axis)
template<typename T >
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > tweakedInfinitePerspective (T fovy, T aspect, T near)
template<typename T , typename U >
detail::tvec3< T > unProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_transform: Matrix transform functions

+
Date:
2009-04-29 / 2011-05-16
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_transform: Extented transformation matrices
+
+GLM_GTX_transform2: Extra transformation matrices
+ +

Definition in file matrix_transform.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00075_source.html b/doc/api-0.9.3/a00075_source.html new file mode 100644 index 00000000..5ad26035 --- /dev/null +++ b/doc/api-0.9.3/a00075_source.html @@ -0,0 +1,199 @@ + + + + +matrix_transform.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

matrix_transform.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 
+00043 
+00044 
+00045 
+00046 #ifndef GLM_GTC_matrix_transform
+00047 #define GLM_GTC_matrix_transform GLM_VERSION
+00048 
+00049 // Dependency:
+00050 #include "../glm.hpp"
+00051 
+00052 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00053 #       pragma message("GLM: GLM_GTC_matrix_transform extension included")
+00054 #endif
+00055 
+00056 namespace glm
+00057 {
+00060 
+00081         template <typename T> 
+00082         detail::tmat4x4<T> translate(
+00083                 detail::tmat4x4<T> const & m,
+00084                 detail::tvec3<T> const & v);
+00085                 
+00097         template <typename T> 
+00098         detail::tmat4x4<T> rotate(
+00099                 detail::tmat4x4<T> const & m,
+00100                 T const & angle, 
+00101                 detail::tvec3<T> const & axis);
+00102 
+00113         template <typename T> 
+00114         detail::tmat4x4<T> scale(
+00115                 detail::tmat4x4<T> const & m,
+00116                 detail::tvec3<T> const & v);
+00117 
+00129         template <typename T> 
+00130         detail::tmat4x4<T> ortho(
+00131                 T const & left, 
+00132                 T const & right, 
+00133                 T const & bottom, 
+00134                 T const & top, 
+00135                 T const & zNear, 
+00136                 T const & zFar);
+00137 
+00147         template <typename T> 
+00148         detail::tmat4x4<T> ortho(
+00149                 T const & left, 
+00150                 T const & right, 
+00151                 T const & bottom, 
+00152                 T const & top);
+00153 
+00164         template <typename T> 
+00165         detail::tmat4x4<T> frustum(
+00166                 T const & left, 
+00167                 T const & right, 
+00168                 T const & bottom, 
+00169                 T const & top, 
+00170                 T const & near, 
+00171                 T const & far);
+00172 
+00181         template <typename T> 
+00182         detail::tmat4x4<T> perspective(
+00183                 T const & fovy, 
+00184                 T const & aspect, 
+00185                 T const & near, 
+00186                 T const & far);
+00187 
+00197         template <typename valType> 
+00198         detail::tmat4x4<valType> perspectiveFov(
+00199                 valType const & fov, 
+00200                 valType const & width, 
+00201                 valType const & height, 
+00202                 valType const & near, 
+00203                 valType const & far);
+00204 
+00212     template <typename T> 
+00213         detail::tmat4x4<T> infinitePerspective(
+00214                 T fovy, T aspect, T near);
+00215 
+00223     template <typename T> 
+00224         detail::tmat4x4<T> tweakedInfinitePerspective(
+00225                 T fovy, T aspect, T near);
+00226 
+00236         template <typename T, typename U> 
+00237         detail::tvec3<T> project(
+00238                 detail::tvec3<T> const & obj, 
+00239                 detail::tmat4x4<T> const & model, 
+00240                 detail::tmat4x4<T> const & proj, 
+00241                 detail::tvec4<U> const & viewport);
+00242 
+00252         template <typename T, typename U> 
+00253         detail::tvec3<T> unProject(
+00254                 detail::tvec3<T> const & win, 
+00255                 detail::tmat4x4<T> const & model, 
+00256                 detail::tmat4x4<T> const & proj, 
+00257                 detail::tvec4<U> const & viewport);
+00258 
+00267         template <typename T, typename U> 
+00268         detail::tmat4x4<T> pickMatrix(
+00269                 detail::tvec2<T> const & center, 
+00270                 detail::tvec2<T> const & delta, 
+00271                 detail::tvec4<U> const & viewport);
+00272 
+00280         template <typename T> 
+00281         detail::tmat4x4<T> lookAt(
+00282                 detail::tvec3<T> const & eye, 
+00283                 detail::tvec3<T> const & center, 
+00284                 detail::tvec3<T> const & up);
+00285 
+00287 }//namespace glm
+00288 
+00289 #include "matrix_transform.inl"
+00290 
+00291 #endif//GLM_GTC_matrix_transform
+
+
+ + + diff --git a/doc/api-0.9.3/a00076.html b/doc/api-0.9.3/a00076.html new file mode 100644 index 00000000..1b76aee7 --- /dev/null +++ b/doc/api-0.9.3/a00076.html @@ -0,0 +1,71 @@ + + + + +mixed_product.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

mixed_product.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

+template<typename valType >
valType mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_mixed_producte: Mixed product

+
Date:
2007-04-03 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file mixed_product.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00076_source.html b/doc/api-0.9.3/a00076_source.html new file mode 100644 index 00000000..b3fd1a98 --- /dev/null +++ b/doc/api-0.9.3/a00076_source.html @@ -0,0 +1,107 @@ + + + + +mixed_product.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

mixed_product.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_mixed_product
+00039 #define GLM_GTX_mixed_product GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_mixed_product extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00054         template <typename valType> 
+00055         valType mixedProduct(
+00056                 detail::tvec3<valType> const & v1, 
+00057                 detail::tvec3<valType> const & v2, 
+00058                 detail::tvec3<valType> const & v3);
+00059 
+00061 }// namespace glm
+00062 
+00063 #include "mixed_product.inl"
+00064 
+00065 #endif//GLM_GTX_mixed_product
+
+
+ + + diff --git a/doc/api-0.9.3/a00077.html b/doc/api-0.9.3/a00077.html new file mode 100644 index 00000000..27e47409 --- /dev/null +++ b/doc/api-0.9.3/a00077.html @@ -0,0 +1,74 @@ + + + + +multiple.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

multiple.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genType >
genType higherMultiple (genType const &Source, genType const &Multiple)
template<typename genType >
genType lowerMultiple (genType const &Source, genType const &Multiple)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_multiple: Multiples

+
Date:
2009-10-26 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file multiple.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00077_source.html b/doc/api-0.9.3/a00077_source.html new file mode 100644 index 00000000..2870ef99 --- /dev/null +++ b/doc/api-0.9.3/a00077_source.html @@ -0,0 +1,112 @@ + + + + +multiple.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

multiple.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_multiple
+00040 #define GLM_GTX_multiple GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_multiple extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         template <typename genType> 
+00057         genType higherMultiple(
+00058                 genType const & Source, 
+00059                 genType const & Multiple);
+00060 
+00063         template <typename genType> 
+00064         genType lowerMultiple(
+00065                 genType const & Source, 
+00066                 genType const & Multiple);
+00067 
+00069 }//namespace glm
+00070 
+00071 #include "multiple.inl"
+00072 
+00073 #endif//GLM_GTX_multiple
+
+
+ + + diff --git a/doc/api-0.9.3/a00078.html b/doc/api-0.9.3/a00078.html new file mode 100644 index 00000000..d332e21d --- /dev/null +++ b/doc/api-0.9.3/a00078.html @@ -0,0 +1,74 @@ + + + + +noise.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

noise.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , template< typename > class vecType>
perlin (vecType< T > const &p)
template<typename T , template< typename > class vecType>
perlin (vecType< T > const &p, vecType< T > const &rep)
template<typename T , template< typename > class vecType>
simplex (vecType< T > const &p)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_noise: Procedural noise functions

+
Date:
2011-04-21 / 2011-09-27
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file gtc/noise.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00078_source.html b/doc/api-0.9.3/a00078_source.html new file mode 100644 index 00000000..1f87987d --- /dev/null +++ b/doc/api-0.9.3/a00078_source.html @@ -0,0 +1,117 @@ + + + + +noise.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

noise.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 #ifndef GLM_GTC_noise
+00042 #define GLM_GTC_noise GLM_VERSION
+00043 
+00044 // Dependency:
+00045 #include "../glm.hpp"
+00046 
+00047 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00048 #       pragma message("GLM: GLM_GTC_noise extension included")
+00049 #endif
+00050 
+00051 namespace glm
+00052 {
+00055 
+00058         template <typename T, template<typename> class vecType> 
+00059     T perlin(
+00060                 vecType<T> const & p);
+00061                 
+00064         template <typename T, template<typename> class vecType> 
+00065     T perlin(
+00066                 vecType<T> const & p, 
+00067                 vecType<T> const & rep);
+00068 
+00071         template <typename T, template<typename> class vecType> 
+00072     T simplex(
+00073                 vecType<T> const & p);
+00074 
+00076 }//namespace glm
+00077 
+00078 #include "noise.inl"
+00079 
+00080 #endif//GLM_GTC_noise
+
+
+ + + diff --git a/doc/api-0.9.3/a00079.html b/doc/api-0.9.3/a00079.html new file mode 100644 index 00000000..d213402f --- /dev/null +++ b/doc/api-0.9.3/a00079.html @@ -0,0 +1,64 @@ + + + + +noise.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

noise.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_noise: Procedural noise functions

+
Date:
2011-04-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file gtx/noise.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00079_source.html b/doc/api-0.9.3/a00079_source.html new file mode 100644 index 00000000..d19e5bd9 --- /dev/null +++ b/doc/api-0.9.3/a00079_source.html @@ -0,0 +1,106 @@ + + + + +noise.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

noise.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 #ifndef GLM_GTX_noise
+00043 #define GLM_GTX_noise GLM_VERSION
+00044 
+00045 // Dependency:
+00046 #include "../glm.hpp"
+00047 #include "../gtc/noise.hpp"
+00048 
+00049 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00050 #       pragma message("GLM: GLM_GTX_noise extension included")
+00051 #endif
+00052 
+00053 namespace glm
+00054 {
+00057 
+00059 }//namespace glm
+00060 
+00061 #include "noise.inl"
+00062 
+00063 #endif//glm_gtx_noise
+
+
+ + + diff --git a/doc/api-0.9.3/a00080.html b/doc/api-0.9.3/a00080.html new file mode 100644 index 00000000..a69bfd25 --- /dev/null +++ b/doc/api-0.9.3/a00080.html @@ -0,0 +1,92 @@ + + + + +norm.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

norm.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
distance2 (T const &p0, T const &p1)
template<typename genType >
genType::value_type distance2 (genType const &p0, genType const &p1)
template<typename T >
l1Norm (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
template<typename T >
l1Norm (detail::tvec3< T > const &v)
template<typename T >
l2Norm (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
template<typename T >
l2Norm (detail::tvec3< T > const &x)
template<typename genType >
genType::value_type length2 (genType const &x)
template<typename T >
length2 (T const &x)
template<typename T >
length2 (detail::tquat< T > const &q)
template<typename T >
lxNorm (detail::tvec3< T > const &x, detail::tvec3< T > const &y, unsigned int Depth)
template<typename T >
lxNorm (detail::tvec3< T > const &x, unsigned int Depth)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_norm: Vector norm calculations

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_quaternion: Extented quaternion types and functions (dependence)
+ +

Definition in file norm.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00080_source.html b/doc/api-0.9.3/a00080_source.html new file mode 100644 index 00000000..f313d34d --- /dev/null +++ b/doc/api-0.9.3/a00080_source.html @@ -0,0 +1,154 @@ + + + + +norm.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

norm.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_norm
+00040 #define GLM_GTX_norm GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/quaternion.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_norm extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename T> 
+00058         T length2(
+00059                 T const & x);
+00060 
+00063         template <typename genType> 
+00064         typename genType::value_type length2(
+00065                 genType const & x);
+00066                 
+00069         template <typename T>
+00070         T length2(
+00071                 detail::tquat<T> const & q);
+00072 
+00075         template <typename T>
+00076         T distance2(
+00077                 T const & p0, 
+00078                 T const & p1);
+00079                 
+00082         template <typename genType> 
+00083         typename genType::value_type distance2(
+00084                 genType const & p0, 
+00085                 genType const & p1);
+00086 
+00089         template <typename T>
+00090         T l1Norm(
+00091                 detail::tvec3<T> const & x,
+00092                 detail::tvec3<T> const & y);
+00093                 
+00096         template <typename T> 
+00097         T l1Norm(
+00098                 detail::tvec3<T> const & v);
+00099                 
+00102         template <typename T> 
+00103         T l2Norm(
+00104                 detail::tvec3<T> const & x, 
+00105                 detail::tvec3<T> const & y);
+00106                 
+00109         template <typename T> 
+00110         T l2Norm(
+00111                 detail::tvec3<T> const & x);
+00112                 
+00115         template <typename T> 
+00116         T lxNorm(
+00117                 detail::tvec3<T> const & x,
+00118                 detail::tvec3<T> const & y,
+00119                 unsigned int Depth);
+00120 
+00123         template <typename T>
+00124         T lxNorm(
+00125                 detail::tvec3<T> const & x,
+00126                 unsigned int Depth);
+00127 
+00129 }//namespace glm
+00130 
+00131 #include "norm.inl"
+00132 
+00133 #endif//GLM_GTX_norm
+
+
+ + + diff --git a/doc/api-0.9.3/a00081.html b/doc/api-0.9.3/a00081.html new file mode 100644 index 00000000..e28d8a4d --- /dev/null +++ b/doc/api-0.9.3/a00081.html @@ -0,0 +1,72 @@ + + + + +normal.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

normal.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

template<typename T >
detail::tvec3< T > triangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_normal: Compute normals

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file normal.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00081_source.html b/doc/api-0.9.3/a00081_source.html new file mode 100644 index 00000000..ccad7184 --- /dev/null +++ b/doc/api-0.9.3/a00081_source.html @@ -0,0 +1,108 @@ + + + + +normal.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

normal.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_normal
+00040 #define GLM_GTX_normal GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_normal extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056     template <typename T> 
+00057         detail::tvec3<T> triangleNormal(
+00058                 detail::tvec3<T> const & p1, 
+00059                 detail::tvec3<T> const & p2, 
+00060                 detail::tvec3<T> const & p3);
+00061 
+00063 }//namespace glm
+00064 
+00065 #include "normal.inl"
+00066 
+00067 #endif//GLM_GTX_normal
+
+
+ + + diff --git a/doc/api-0.9.3/a00082.html b/doc/api-0.9.3/a00082.html new file mode 100644 index 00000000..8243989b --- /dev/null +++ b/doc/api-0.9.3/a00082.html @@ -0,0 +1,74 @@ + + + + +normalize_dot.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

normalize_dot.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genType >
genType::value_type fastNormalizeDot (genType const &x, genType const &y)
template<typename genType >
genType::value_type normalizeDot (genType const &x, genType const &y)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_normalize_dot: Normalize dot product

+
Date:
2007-09-28 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_fast_square_root: Fast square root functions (dependence)
+ +

Definition in file normalize_dot.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00082_source.html b/doc/api-0.9.3/a00082_source.html new file mode 100644 index 00000000..4e5cadda --- /dev/null +++ b/doc/api-0.9.3/a00082_source.html @@ -0,0 +1,113 @@ + + + + +normalize_dot.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

normalize_dot.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_normalize_dot
+00040 #define GLM_GTX_normalize_dot GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/fast_square_root.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_normalize_dot extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00058         template <typename genType> 
+00059         typename genType::value_type normalizeDot(
+00060                 genType const & x, 
+00061                 genType const & y);
+00062 
+00066         template <typename genType> 
+00067         typename genType::value_type fastNormalizeDot(
+00068                 genType const & x, 
+00069                 genType const & y);
+00070 
+00072 }//namespace glm
+00073 
+00074 #include "normalize_dot.inl"
+00075 
+00076 #endif//GLM_GTX_normalize_dot
+
+
+ + + diff --git a/doc/api-0.9.3/a00083.html b/doc/api-0.9.3/a00083.html new file mode 100644 index 00000000..58865499 --- /dev/null +++ b/doc/api-0.9.3/a00083.html @@ -0,0 +1,98 @@ + + + + +number_precision.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

number_precision.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Typedefs

+typedef f16 f16mat1
+typedef f16 f16mat1x1
+typedef f16 f16vec1
+typedef f32 f32mat1
+typedef f32 f32mat1x1
+typedef f32 f32vec1
+typedef f64 f64mat1
+typedef f64 f64mat1x1
+typedef f64 f64vec1
+typedef u16 u16vec1
+typedef u32 u32vec1
+typedef u64 u64vec1
+typedef u8 u8vec1
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_number_precision: Number precision

+
Date:
2007-05-10 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_type_precision: Vector and matrix types with defined precisions (dependence)
+
+GLM_GTC_quaternion: Quaternion types and functions (dependence)
+ +

Definition in file number_precision.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00083_source.html b/doc/api-0.9.3/a00083_source.html new file mode 100644 index 00000000..ec0561d1 --- /dev/null +++ b/doc/api-0.9.3/a00083_source.html @@ -0,0 +1,128 @@ + + + + +number_precision.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

number_precision.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 #ifndef GLM_GTX_number_precision
+00041 #define GLM_GTX_number_precision GLM_VERSION
+00042 
+00043 // Dependency:
+00044 #include "../glm.hpp"
+00045 #include "../gtc/type_precision.hpp"
+00046 
+00047 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00048 #       pragma message("GLM: GLM_GTX_number_precision extension included")
+00049 #endif
+00050 
+00051 namespace glm{
+00052 namespace gtx
+00053 {
+00055         // Unsigned int vector types 
+00056 
+00059 
+00060         typedef u8                      u8vec1;         
+00061         typedef u16                     u16vec1;    
+00062         typedef u32                     u32vec1;    
+00063         typedef u64                     u64vec1;    
+00064 
+00066         // Float vector types 
+00067 
+00068         typedef f16                     f16vec1;    
+00069         typedef f32                     f32vec1;    
+00070         typedef f64                     f64vec1;    
+00071 
+00073         // Float matrix types 
+00074 
+00075         typedef f16                     f16mat1;    
+00076         typedef f16                     f16mat1x1;      
+00077         typedef f32                     f32mat1;        
+00078         typedef f32                     f32mat1x1;      
+00079         typedef f64                     f64mat1;        
+00080         typedef f64                     f64mat1x1;      
+00081 
+00083 }//namespace gtx
+00084 }//namespace glm
+00085 
+00086 #include "number_precision.inl"
+00087 
+00088 #endif//GLM_GTX_number_precision
+
+
+ + + diff --git a/doc/api-0.9.2/a00203.html b/doc/api-0.9.3/a00084.html similarity index 52% rename from doc/api-0.9.2/a00203.html rename to doc/api-0.9.3/a00084.html index 34cf53b5..74b98677 100644 --- a/doc/api-0.9.2/a00203.html +++ b/doc/api-0.9.3/a00084.html @@ -2,18 +2,18 @@ -glm::gtx::ocl_type Namespace Reference +ocl_type.hpp File Reference - +
@@ -45,140 +37,153 @@
-
glm::gtx::ocl_type Namespace Reference
+

ocl_type.hpp File Reference

-

< GLM_GTX_ocl_type extension: OpenCL types. -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

-typedef detail::int8 cl_char
-typedef detail::int8 cl_char1
-typedef detail::tvec2
-< detail::int8 > 
cl_char2
-typedef detail::tvec3
-< detail::int8 > 
cl_char3
-typedef detail::tvec4
-< detail::int8 > 
cl_char4
-typedef detail::float32 cl_float
-typedef detail::float32 cl_float1
-typedef detail::tvec2
-< detail::float32 > 
cl_float2
-typedef detail::tvec3
-< detail::float32 > 
cl_float3
-typedef detail::tvec4
-< detail::float32 > 
cl_float4
-typedef detail::float16 cl_half
-typedef detail::int32 cl_int
-typedef detail::int32 cl_int1
-typedef detail::tvec2
-< detail::int32 > 
cl_int2
-typedef detail::tvec3
-< detail::int32 > 
cl_int3
-typedef detail::tvec4
-< detail::int32 > 
cl_int4
-typedef detail::int64 cl_long
-typedef detail::int64 cl_long1
-typedef detail::tvec2
-< detail::int64 > 
cl_long2
-typedef detail::tvec3
-< detail::int64 > 
cl_long3
-typedef detail::tvec4
-< detail::int64 > 
cl_long4
-typedef detail::int16 cl_short
-typedef detail::int16 cl_short1
-typedef detail::tvec2
-< detail::int16 > 
cl_short2
-typedef detail::tvec3
-< detail::int16 > 
cl_short3
-typedef detail::tvec4
-< detail::int16 > 
cl_short4
-typedef detail::uint8 cl_uchar
-typedef detail::uint8 cl_uchar1
-typedef detail::tvec2
-< detail::uint8 > 
cl_uchar2
-typedef detail::tvec3
-< detail::uint8 > 
cl_uchar3
-typedef detail::tvec4
-< detail::uint8 > 
cl_uchar4
-typedef detail::uint32 cl_uint
-typedef detail::uint32 cl_uint1
-typedef detail::tvec2
-< detail::uint32 > 
cl_uint2
-typedef detail::tvec3
-< detail::uint32 > 
cl_uint3
-typedef detail::tvec4
-< detail::uint32 > 
cl_uint4
-typedef detail::uint64 cl_ulong
-typedef detail::uint64 cl_ulong1
-typedef detail::tvec2
-< detail::uint64 > 
cl_ulong2
-typedef detail::tvec3
-< detail::uint64 > 
cl_ulong3
-typedef detail::tvec4
-< detail::uint64 > 
cl_ulong4
-typedef detail::uint16 cl_ushort
-typedef detail::uint16 cl_ushort1
-typedef detail::tvec2
-< detail::uint16 > 
cl_ushort2
-typedef detail::tvec3
-< detail::uint16 > 
cl_ushort3
-typedef detail::tvec4
-< detail::uint16 > 
cl_ushort4
+typedef detail::int8 cl_char
+typedef detail::int8 cl_char1
+typedef detail::tvec2
+< detail::int8 > 
cl_char2
+typedef detail::tvec3
+< detail::int8 > 
cl_char3
+typedef detail::tvec4
+< detail::int8 > 
cl_char4
+typedef detail::float32 cl_float
+typedef detail::float32 cl_float1
+typedef detail::tvec2
+< detail::float32 > 
cl_float2
+typedef detail::tvec3
+< detail::float32 > 
cl_float3
+typedef detail::tvec4
+< detail::float32 > 
cl_float4
+typedef detail::float16 cl_half
+typedef detail::int32 cl_int
+typedef detail::int32 cl_int1
+typedef detail::tvec2
+< detail::int32 > 
cl_int2
+typedef detail::tvec3
+< detail::int32 > 
cl_int3
+typedef detail::tvec4
+< detail::int32 > 
cl_int4
+typedef detail::int64 cl_long
+typedef detail::int64 cl_long1
+typedef detail::tvec2
+< detail::int64 > 
cl_long2
+typedef detail::tvec3
+< detail::int64 > 
cl_long3
+typedef detail::tvec4
+< detail::int64 > 
cl_long4
+typedef detail::int16 cl_short
+typedef detail::int16 cl_short1
+typedef detail::tvec2
+< detail::int16 > 
cl_short2
+typedef detail::tvec3
+< detail::int16 > 
cl_short3
+typedef detail::tvec4
+< detail::int16 > 
cl_short4
+typedef detail::uint8 cl_uchar
+typedef detail::uint8 cl_uchar1
+typedef detail::tvec2
+< detail::uint8 > 
cl_uchar2
+typedef detail::tvec3
+< detail::uint8 > 
cl_uchar3
+typedef detail::tvec4
+< detail::uint8 > 
cl_uchar4
+typedef detail::uint32 cl_uint
+typedef detail::uint32 cl_uint1
+typedef detail::tvec2
+< detail::uint32 > 
cl_uint2
+typedef detail::tvec3
+< detail::uint32 > 
cl_uint3
+typedef detail::tvec4
+< detail::uint32 > 
cl_uint4
+typedef detail::uint64 cl_ulong
+typedef detail::uint64 cl_ulong1
+typedef detail::tvec2
+< detail::uint64 > 
cl_ulong2
+typedef detail::tvec3
+< detail::uint64 > 
cl_ulong3
+typedef detail::tvec4
+< detail::uint64 > 
cl_ulong4
+typedef detail::uint16 cl_ushort
+typedef detail::uint16 cl_ushort1
+typedef detail::tvec2
+< detail::uint16 > 
cl_ushort2
+typedef detail::tvec3
+< detail::uint16 > 
cl_ushort3
+typedef detail::tvec4
+< detail::uint16 > 
cl_ushort4
-

Detailed Description

-

< GLM_GTX_ocl_type extension: OpenCL types.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_ocl_type: OpenCL types

+
Date:
2009-05-07 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file ocl_type.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00084_source.html b/doc/api-0.9.3/a00084_source.html new file mode 100644 index 00000000..85818dac --- /dev/null +++ b/doc/api-0.9.3/a00084_source.html @@ -0,0 +1,174 @@ + + + + +ocl_type.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

ocl_type.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_ocl_type
+00040 #define GLM_GTX_ocl_type GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_ocl_type extension included")
+00047 #endif
+00048 
+00049 namespace glm{
+00050 namespace gtx
+00051 {
+00053         // Scalar types 
+00054 
+00057 
+00058         typedef detail::int8                                            cl_char;                
+00059         typedef detail::int16                                           cl_short;               
+00060         typedef detail::int32                                           cl_int;                 
+00061         typedef detail::int64                                           cl_long;                
+00062 
+00063         typedef detail::uint8                                           cl_uchar;               
+00064         typedef detail::uint16                                          cl_ushort;              
+00065         typedef detail::uint32                                          cl_uint;                
+00066         typedef detail::uint64                                          cl_ulong;               
+00067 
+00068         typedef detail::float16                                         cl_half;        
+00069         typedef detail::float32                                         cl_float;       
+00070 
+00071 
+00072         typedef detail::int8                                            cl_char1;               
+00073         typedef detail::int16                                           cl_short1;              
+00074         typedef detail::int32                                           cl_int1;                        
+00075         typedef detail::int64                                           cl_long1;               
+00076 
+00077         typedef detail::uint8                                           cl_uchar1;              
+00078         typedef detail::uint16                                          cl_ushort1;             
+00079         typedef detail::uint32                                          cl_uint1;               
+00080         typedef detail::uint64                                          cl_ulong1;              
+00081 
+00082         //typedef detail::float16                                               cl_half1;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
+00083         typedef detail::float32                                         cl_float1;      
+00084 
+00085 
+00086         typedef detail::tvec2<detail::int8>                     cl_char2;               
+00087         typedef detail::tvec2<detail::int16>            cl_short2;              
+00088         typedef detail::tvec2<detail::int32>            cl_int2;                        
+00089         typedef detail::tvec2<detail::int64>            cl_long2;               
+00090 
+00091         typedef detail::tvec2<detail::uint8>            cl_uchar2;              
+00092         typedef detail::tvec2<detail::uint16>           cl_ushort2;             
+00093         typedef detail::tvec2<detail::uint32>           cl_uint2;               
+00094         typedef detail::tvec2<detail::uint64>           cl_ulong2;              
+00095 
+00096         //typedef detail::tvec2<detail::float16>                cl_half2;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
+00097         typedef detail::tvec2<detail::float32>          cl_float2;      
+00098 
+00099 
+00100         typedef detail::tvec3<detail::int8>                     cl_char3;               
+00101         typedef detail::tvec3<detail::int16>            cl_short3;              
+00102         typedef detail::tvec3<detail::int32>            cl_int3;                        
+00103         typedef detail::tvec3<detail::int64>            cl_long3;               
+00104 
+00105         typedef detail::tvec3<detail::uint8>            cl_uchar3;              
+00106         typedef detail::tvec3<detail::uint16>           cl_ushort3;             
+00107         typedef detail::tvec3<detail::uint32>           cl_uint3;               
+00108         typedef detail::tvec3<detail::uint64>           cl_ulong3;              
+00109 
+00110         //typedef detail::tvec3<detail::float16>                cl_half3;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
+00111         typedef detail::tvec3<detail::float32>          cl_float3;      
+00112 
+00113 
+00114         typedef detail::tvec4<detail::int8>                     cl_char4;               
+00115         typedef detail::tvec4<detail::int16>            cl_short4;              
+00116         typedef detail::tvec4<detail::int32>            cl_int4;                        
+00117         typedef detail::tvec4<detail::int64>            cl_long4;               
+00118         typedef detail::tvec4<detail::uint8>            cl_uchar4;              
+00119         typedef detail::tvec4<detail::uint16>           cl_ushort4;             
+00120         typedef detail::tvec4<detail::uint32>           cl_uint4;               
+00121         typedef detail::tvec4<detail::uint64>           cl_ulong4;              
+00122 
+00123         //typedef detail::tvec4<detail::float16>                cl_half4;       //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
+00124         typedef detail::tvec4<detail::float32>          cl_float4;      
+00125 
+00127 }//namespace gtx
+00128 }//namespace glm
+00129 
+00130 #include "ocl_type.inl"
+00131 
+00132 #endif//GLM_GTX_ocl_type
+
+
+ + + diff --git a/doc/api-0.9.3/a00085.html b/doc/api-0.9.3/a00085.html new file mode 100644 index 00000000..06abdcc1 --- /dev/null +++ b/doc/api-0.9.3/a00085.html @@ -0,0 +1,78 @@ + + + + +optimum_pow.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

optimum_pow.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + +

+Functions

template<typename genType >
genType pow2 (const genType &x)
template<typename genType >
genType pow3 (const genType &x)
template<typename genType >
genType pow4 (const genType &x)
detail::tvec2< bool > powOfTwo (const detail::tvec2< int > &x)
bool powOfTwo (int num)
detail::tvec3< bool > powOfTwo (const detail::tvec3< int > &x)
detail::tvec4< bool > powOfTwo (const detail::tvec4< int > &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_optimum_pow: Optimum pow

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file optimum_pow.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00085_source.html b/doc/api-0.9.3/a00085_source.html new file mode 100644 index 00000000..4fc3f3f2 --- /dev/null +++ b/doc/api-0.9.3/a00085_source.html @@ -0,0 +1,120 @@ + + + + +optimum_pow.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

optimum_pow.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_optimum_pow
+00039 #define GLM_GTX_optimum_pow GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_optimum_pow extension included")
+00046 #endif
+00047 
+00048 namespace glm{
+00049 namespace gtx
+00050 {
+00053 
+00056     template <typename genType> 
+00057         genType pow2(const genType& x);
+00058 
+00061     template <typename genType> 
+00062         genType pow3(const genType& x);
+00063 
+00066         template <typename genType> 
+00067         genType pow4(const genType& x);
+00068         
+00071     bool powOfTwo(int num);
+00072 
+00075     detail::tvec2<bool> powOfTwo(const detail::tvec2<int>& x);
+00076 
+00079     detail::tvec3<bool> powOfTwo(const detail::tvec3<int>& x);
+00080 
+00083     detail::tvec4<bool> powOfTwo(const detail::tvec4<int>& x);
+00084 
+00086 }//namespace gtx
+00087 }//namespace glm
+00088 
+00089 #include "optimum_pow.inl"
+00090 
+00091 #endif//GLM_GTX_optimum_pow
+
+
+ + + diff --git a/doc/api-0.9.3/a00086.html b/doc/api-0.9.3/a00086.html new file mode 100644 index 00000000..6591cf35 --- /dev/null +++ b/doc/api-0.9.3/a00086.html @@ -0,0 +1,74 @@ + + + + +orthonormalize.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

orthonormalize.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T >
detail::tmat3x3< T > orthonormalize (const detail::tmat3x3< T > &m)
template<typename T >
detail::tvec3< T > orthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_orthonormalize: Orthonormalize

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file orthonormalize.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00086_source.html b/doc/api-0.9.3/a00086_source.html new file mode 100644 index 00000000..abc1a4e8 --- /dev/null +++ b/doc/api-0.9.3/a00086_source.html @@ -0,0 +1,111 @@ + + + + +orthonormalize.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

orthonormalize.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_orthonormalize
+00040 #define GLM_GTX_orthonormalize GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_orthonormalize extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         template <typename T> 
+00057         detail::tmat3x3<T> orthonormalize(
+00058                 const detail::tmat3x3<T>& m);
+00059                 
+00062         template <typename T> 
+00063         detail::tvec3<T> orthonormalize(
+00064                 const detail::tvec3<T>& x, 
+00065                 const detail::tvec3<T>& y);
+00066 
+00068 }//namespace glm
+00069 
+00070 #include "orthonormalize.inl"
+00071 
+00072 #endif//GLM_GTX_orthonormalize
+
+
+ + + diff --git a/doc/api-0.9.2/a00090_source.html b/doc/api-0.9.3/a00087_source.html similarity index 83% rename from doc/api-0.9.2/a00090_source.html rename to doc/api-0.9.3/a00087_source.html index 392c2aa4..40754438 100644 --- a/doc/api-0.9.2/a00090_source.html +++ b/doc/api-0.9.3/a00087_source.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
pages.doxy
+

pages.doxy

00001 
@@ -42,6 +42,6 @@
 
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00088.html b/doc/api-0.9.3/a00088.html new file mode 100644 index 00000000..86eb9eeb --- /dev/null +++ b/doc/api-0.9.3/a00088.html @@ -0,0 +1,72 @@ + + + + +perpendicular.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

perpendicular.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

template<typename vecType >
vecType perp (vecType const &x, vecType const &Normal)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_perpendicular: Perpendicular

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_projection: Projection (dependence)
+ +

Definition in file perpendicular.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00088_source.html b/doc/api-0.9.3/a00088_source.html new file mode 100644 index 00000000..da212f8d --- /dev/null +++ b/doc/api-0.9.3/a00088_source.html @@ -0,0 +1,108 @@ + + + + +perpendicular.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

perpendicular.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_perpendicular
+00040 #define GLM_GTX_perpendicular GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/projection.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_perpendicular extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename vecType> 
+00058         vecType perp(
+00059                 vecType const & x, 
+00060                 vecType const & Normal);
+00061 
+00063 }//namespace glm
+00064 
+00065 #include "perpendicular.inl"
+00066 
+00067 #endif//GLM_GTX_perpendicular
+
+
+ + + diff --git a/doc/api-0.9.3/a00089.html b/doc/api-0.9.3/a00089.html new file mode 100644 index 00000000..8455008a --- /dev/null +++ b/doc/api-0.9.3/a00089.html @@ -0,0 +1,72 @@ + + + + +polar_coordinates.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

polar_coordinates.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T >
detail::tvec3< T > euclidean (detail::tvec3< T > const &polar)
template<typename T >
detail::tvec3< T > polar (detail::tvec3< T > const &euclidean)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_polar_coordinates: Polar coordinates

+
Date:
2007-03-06 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file polar_coordinates.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00089_source.html b/doc/api-0.9.3/a00089_source.html new file mode 100644 index 00000000..1a8c2323 --- /dev/null +++ b/doc/api-0.9.3/a00089_source.html @@ -0,0 +1,109 @@ + + + + +polar_coordinates.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

polar_coordinates.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_polar_coordinates
+00039 #define GLM_GTX_polar_coordinates GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_polar_coordinates extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename T> 
+00056         detail::tvec3<T> polar(
+00057                 detail::tvec3<T> const & euclidean);
+00058 
+00061         template <typename T> 
+00062         detail::tvec3<T> euclidean(
+00063                 detail::tvec3<T> const & polar);
+00064 
+00066 }//namespace glm
+00067 
+00068 #include "polar_coordinates.inl"
+00069 
+00070 #endif//GLM_GTX_polar_coordinates
+
+
+ + + diff --git a/doc/api-0.9.3/a00090.html b/doc/api-0.9.3/a00090.html new file mode 100644 index 00000000..1ec16bdc --- /dev/null +++ b/doc/api-0.9.3/a00090.html @@ -0,0 +1,70 @@ + + + + +projection.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

projection.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

template<typename vecType >
vecType proj (vecType const &x, vecType const &Normal)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_projection: Projection

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file projection.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00090_source.html b/doc/api-0.9.3/a00090_source.html new file mode 100644 index 00000000..dff86e17 --- /dev/null +++ b/doc/api-0.9.3/a00090_source.html @@ -0,0 +1,106 @@ + + + + +projection.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

projection.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_projection
+00039 #define GLM_GTX_projection GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_projection extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename vecType> 
+00056         vecType proj(
+00057                 vecType const & x, 
+00058                 vecType const & Normal);
+00059 
+00061 }//namespace glm
+00062 
+00063 #include "projection.inl"
+00064 
+00065 #endif//GLM_GTX_projection
+
+
+ + + diff --git a/doc/api-0.9.3/a00091.html b/doc/api-0.9.3/a00091.html new file mode 100644 index 00000000..3d342177 --- /dev/null +++ b/doc/api-0.9.3/a00091.html @@ -0,0 +1,110 @@ + + + + +quaternion.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

quaternion.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  tquat< T >
 Template for quaternion. More...

+Typedefs

typedef detail::tquat< double > dquat
typedef detail::tquat< float > fquat
typedef detail::tquat
+< highp_float > 
highp_quat
typedef detail::tquat
+< detail::thalf > 
hquat
typedef detail::tquat< lowp_float > lowp_quat
typedef detail::tquat
+< mediump_float > 
mediump_quat
typedef detail::tquat< float > quat

+Functions

template<typename T >
detail::tquat< T > conjugate (detail::tquat< T > const &q)
template<typename T >
dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
template<typename T >
detail::tquat< T > inverse (detail::tquat< T > const &q)
template<typename T >
length (detail::tquat< T > const &q)
template<typename T >
detail::tmat3x3< T > mat3_cast (detail::tquat< T > const &x)
template<typename T >
detail::tmat4x4< T > mat4_cast (detail::tquat< T > const &x)
template<typename T >
detail::tquat< T > mix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename T >
detail::tquat< T > normalize (detail::tquat< T > const &q)
template<typename T >
detail::tquat< T > quat_cast (detail::tmat4x4< T > const &x)
template<typename T >
detail::tquat< T > quat_cast (detail::tmat3x3< T > const &x)
template<typename T >
detail::tquat< T > rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_quaternion: Quaternion types and functions

+
Date:
2009-05-21 / 2011-06-05
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+ +

Definition in file gtc/quaternion.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00091_source.html b/doc/api-0.9.3/a00091_source.html new file mode 100644 index 00000000..a728ed5d --- /dev/null +++ b/doc/api-0.9.3/a00091_source.html @@ -0,0 +1,260 @@ + + + + +quaternion.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

quaternion.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTC_quaternion
+00040 #define GLM_GTC_quaternion GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/half_float.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTC_quaternion extension included")
+00048 #endif
+00049 
+00050 namespace glm{
+00051 namespace detail
+00052 {
+00056         template <typename T> 
+00057         struct tquat// : public genType<T, tquat>
+00058         {
+00059         enum ctor{null};
+00060         
+00061         typedef T value_type;
+00062         typedef std::size_t size_type;
+00063 
+00064         public:
+00065                 value_type x, y, z, w;
+00066         
+00067         GLM_FUNC_DECL size_type length() const;
+00068 
+00069                 // Constructors
+00070                 tquat();
+00071                 explicit tquat(
+00072                         value_type const & s, 
+00073                         glm::detail::tvec3<T> const & v);
+00074                 explicit tquat(
+00075                         value_type const & w, 
+00076                         value_type const & x, 
+00077                         value_type const & y, 
+00078                         value_type const & z);
+00079 
+00080                 // Convertions
+00081                 //explicit tquat(valType const & pitch, valType const & yaw, valType const & roll);
+00083                 explicit tquat(
+00084                         tvec3<T> const & eulerAngles);
+00085                 explicit tquat(
+00086                         tmat3x3<T> const & m);
+00087                 explicit tquat(
+00088                         tmat4x4<T> const & m);
+00089 
+00090                 // Accesses
+00091                 value_type & operator[](int i);
+00092                 value_type const & operator[](int i) const;
+00093 
+00094                 // Operators
+00095                 tquat<T> & operator*=(value_type const & s);
+00096                 tquat<T> & operator/=(value_type const & s);
+00097         };
+00098 
+00099         template <typename T> 
+00100         detail::tquat<T> operator- (
+00101                 detail::tquat<T> const & q);
+00102 
+00103         template <typename T> 
+00104         detail::tquat<T> operator+ ( 
+00105                 detail::tquat<T> const & q, 
+00106                 detail::tquat<T> const & p); 
+00107 
+00108         template <typename T> 
+00109         detail::tquat<T> operator* ( 
+00110                 detail::tquat<T> const & q, 
+00111                 detail::tquat<T> const & p); 
+00112 
+00113         template <typename T> 
+00114         detail::tvec3<T> operator* (
+00115                 detail::tquat<T> const & q, 
+00116                 detail::tvec3<T> const & v);
+00117 
+00118         template <typename T> 
+00119         detail::tvec3<T> operator* (
+00120                 detail::tvec3<T> const & v,
+00121                 detail::tquat<T> const & q);
+00122 
+00123         template <typename T> 
+00124         detail::tvec4<T> operator* (
+00125                 detail::tquat<T> const & q, 
+00126                 detail::tvec4<T> const & v);
+00127 
+00128         template <typename T> 
+00129         detail::tvec4<T> operator* (
+00130                 detail::tvec4<T> const & v,
+00131                 detail::tquat<T> const & q);
+00132 
+00133         template <typename T> 
+00134         detail::tquat<T> operator* (
+00135                 detail::tquat<T> const & q, 
+00136                 typename detail::tquat<T>::value_type const & s);
+00137 
+00138         template <typename T> 
+00139         detail::tquat<T> operator* (
+00140                 typename detail::tquat<T>::value_type const & s,
+00141                 detail::tquat<T> const & q);
+00142 
+00143         template <typename T> 
+00144         detail::tquat<T> operator/ (
+00145                 detail::tquat<T> const & q, 
+00146                 typename detail::tquat<T>::value_type const & s);
+00147 
+00148 } //namespace detail
+00149 
+00152 
+00156     template <typename T> 
+00157     T length(
+00158                 detail::tquat<T> const & q);
+00159 
+00163         template <typename T> 
+00164         detail::tquat<T> normalize(
+00165                 detail::tquat<T> const & q);
+00166                 
+00170         template <typename T> 
+00171         T dot(
+00172                 detail::tquat<T> const & q1, 
+00173                 detail::tquat<T> const & q2);
+00174 
+00178         template <typename T> 
+00179         detail::tquat<T> mix(
+00180                 detail::tquat<T> const & x, 
+00181                 detail::tquat<T> const & y, 
+00182                 T const & a);
+00183                 
+00187     template <typename T> 
+00188         detail::tquat<T> conjugate(
+00189                 detail::tquat<T> const & q);
+00190 
+00194     template <typename T> 
+00195         detail::tquat<T> inverse(
+00196                 detail::tquat<T> const & q);
+00197 
+00201         template <typename T> 
+00202         detail::tquat<T> rotate(
+00203                 detail::tquat<T> const & q, 
+00204                 typename detail::tquat<T>::value_type const & angle, 
+00205                 detail::tvec3<T> const & v);
+00206 
+00210     template <typename T> 
+00211         detail::tmat3x3<T> mat3_cast(
+00212                 detail::tquat<T> const & x);
+00213 
+00217         template <typename T> 
+00218         detail::tmat4x4<T> mat4_cast(
+00219                 detail::tquat<T> const & x);
+00220 
+00224         template <typename T> 
+00225         detail::tquat<T> quat_cast(
+00226                 detail::tmat3x3<T> const & x);
+00227 
+00231         template <typename T> 
+00232         detail::tquat<T> quat_cast(
+00233                 detail::tmat4x4<T> const & x);
+00234 
+00238     typedef detail::tquat<float> quat;
+00239 
+00243         typedef detail::tquat<detail::thalf>    hquat;
+00244 
+00248         typedef detail::tquat<float>    fquat;
+00249 
+00253         typedef detail::tquat<double>   dquat;
+00254 
+00258         typedef detail::tquat<lowp_float>               lowp_quat;
+00259 
+00263         typedef detail::tquat<mediump_float>    mediump_quat;
+00264 
+00268         typedef detail::tquat<highp_float>              highp_quat;
+00269 
+00271 } //namespace glm
+00272 
+00273 #include "quaternion.inl"
+00274 
+00275 #endif//GLM_GTC_quaternion
+
+
+ + + diff --git a/doc/api-0.9.3/a00092.html b/doc/api-0.9.3/a00092.html new file mode 100644 index 00000000..869853db --- /dev/null +++ b/doc/api-0.9.3/a00092.html @@ -0,0 +1,118 @@ + + + + +quaternion.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

quaternion.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename valType >
valType angle (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, detail::tvec3< valType > const &axis)
template<typename valType >
detail::tvec3< valType > axis (detail::tquat< valType > const &x)
template<typename valType >
detail::tvec3< valType > cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
template<typename valType >
detail::tvec3< valType > cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q)
template<typename valType >
detail::tvec3< valType > eulerAngles (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > exp (detail::tquat< valType > const &q, valType const &exponent)
template<typename valType >
valType extractRealComponent (detail::tquat< valType > const &q)
template<typename T >
detail::tquat< T > fastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename valType >
detail::tquat< valType > intermediate (detail::tquat< valType > const &prev, detail::tquat< valType > const &curr, detail::tquat< valType > const &next)
template<typename valType >
detail::tquat< valType > log (detail::tquat< valType > const &q)
template<typename valType >
valType pitch (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > pow (detail::tquat< valType > const &x, valType const &y)
template<typename valType >
valType roll (detail::tquat< valType > const &x)
template<typename valType >
detail::tvec3< valType > rotate (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
template<typename valType >
detail::tvec4< valType > rotate (detail::tquat< valType > const &q, detail::tvec4< valType > const &v)
template<typename T >
detail::tquat< T > shortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename valType >
detail::tquat< valType > squad (detail::tquat< valType > const &q1, detail::tquat< valType > const &q2, detail::tquat< valType > const &s1, detail::tquat< valType > const &s2, valType const &h)
template<typename valType >
detail::tmat3x3< valType > toMat3 (detail::tquat< valType > const &x)
template<typename valType >
detail::tmat4x4< valType > toMat4 (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat4x4< valType > const &x)
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat3x3< valType > const &x)
template<typename valType >
valType yaw (detail::tquat< valType > const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_quaternion: Extented quaternion types and functions

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file gtx/quaternion.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00092_source.html b/doc/api-0.9.3/a00092_source.html new file mode 100644 index 00000000..86b220d4 --- /dev/null +++ b/doc/api-0.9.3/a00092_source.html @@ -0,0 +1,223 @@ + + + + +quaternion.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

quaternion.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_quaternion
+00040 #define GLM_GTX_quaternion GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/quaternion.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_quaternion extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename valType> 
+00058         detail::tvec3<valType> cross(
+00059                 detail::tquat<valType> const & q, 
+00060                 detail::tvec3<valType> const & v);
+00061 
+00064         template <typename valType> 
+00065         detail::tvec3<valType> cross(
+00066                 detail::tvec3<valType> const & v, 
+00067                 detail::tquat<valType> const & q);
+00068 
+00072         template <typename valType> 
+00073         detail::tquat<valType> squad(
+00074                 detail::tquat<valType> const & q1, 
+00075                 detail::tquat<valType> const & q2, 
+00076                 detail::tquat<valType> const & s1, 
+00077                 detail::tquat<valType> const & s2, 
+00078                 valType const & h);
+00079 
+00082         template <typename valType> 
+00083         detail::tquat<valType> intermediate(
+00084                 detail::tquat<valType> const & prev, 
+00085                 detail::tquat<valType> const & curr, 
+00086                 detail::tquat<valType> const & next);
+00087 
+00090     template <typename valType> 
+00091         detail::tquat<valType> exp(
+00092                 detail::tquat<valType> const & q, 
+00093                 valType const & exponent);
+00094 
+00097     template <typename valType> 
+00098         detail::tquat<valType> log(
+00099                 detail::tquat<valType> const & q);
+00100 
+00103     template <typename valType> 
+00104         detail::tquat<valType> pow(
+00105                 detail::tquat<valType> const & x, 
+00106                 valType const & y);
+00107 
+00110         //template <typename valType> 
+00111         //detail::tquat<valType> sqrt(
+00112         //      detail::tquat<valType> const & q);
+00113 
+00116         template <typename valType> 
+00117         detail::tvec3<valType> rotate(
+00118                 detail::tquat<valType> const & q, 
+00119                 detail::tvec3<valType> const & v);
+00120 
+00123         template <typename valType> 
+00124         detail::tvec4<valType> rotate(
+00125                 detail::tquat<valType> const & q, 
+00126                 detail::tvec4<valType> const & v);
+00127                 
+00130         template <typename valType> 
+00131         valType angle(
+00132                 detail::tquat<valType> const & x);
+00133 
+00136         template <typename valType> 
+00137         detail::tvec3<valType> axis(
+00138                 detail::tquat<valType> const & x);
+00139 
+00142         template <typename valType> 
+00143         detail::tquat<valType> angleAxis(
+00144                 valType const & angle, 
+00145                 valType const & x, 
+00146                 valType const & y, 
+00147                 valType const & z);
+00148 
+00151         template <typename valType> 
+00152         detail::tquat<valType> angleAxis(
+00153                 valType const & angle, 
+00154                 detail::tvec3<valType> const & axis);
+00155 
+00158         template <typename valType> 
+00159         valType extractRealComponent(
+00160                 detail::tquat<valType> const & q);
+00161 
+00164         template <typename valType> 
+00165         valType roll(
+00166                 detail::tquat<valType> const & x);
+00167 
+00170     template <typename valType> 
+00171         valType pitch(
+00172                 detail::tquat<valType> const & x);
+00173 
+00176         template <typename valType> 
+00177         valType yaw(
+00178                 detail::tquat<valType> const & x);
+00179                 
+00182         template <typename valType> 
+00183         detail::tvec3<valType> eulerAngles(
+00184                 detail::tquat<valType> const & x);
+00185 
+00188     template <typename valType> 
+00189         detail::tmat3x3<valType> toMat3(
+00190                 detail::tquat<valType> const & x){return mat3_cast(x);}
+00191 
+00194         template <typename valType> 
+00195         detail::tmat4x4<valType> toMat4(
+00196                 detail::tquat<valType> const & x){return mat4_cast(x);}
+00197 
+00200         template <typename valType> 
+00201         detail::tquat<valType> toQuat(
+00202                 detail::tmat3x3<valType> const & x){return quat_cast(x);}
+00203 
+00206         template <typename valType> 
+00207         detail::tquat<valType> toQuat(
+00208                 detail::tmat4x4<valType> const & x){return quat_cast(x);}
+00209 
+00212         template <typename T>
+00213         detail::tquat<T> shortMix(
+00214                 detail::tquat<T> const & x, 
+00215                 detail::tquat<T> const & y, 
+00216                 T const & a);
+00217 
+00220         template <typename T>
+00221         detail::tquat<T> fastMix(
+00222                 detail::tquat<T> const & x, 
+00223                 detail::tquat<T> const & y, 
+00224                 T const & a);
+00225 
+00227 }//namespace glm
+00228 
+00229 #include "quaternion.inl"
+00230 
+00231 #endif//GLM_GTX_quaternion
+
+
+ + + diff --git a/doc/api-0.9.3/a00093.html b/doc/api-0.9.3/a00093.html new file mode 100644 index 00000000..3b3fc48a --- /dev/null +++ b/doc/api-0.9.3/a00093.html @@ -0,0 +1,85 @@ + + + + +random.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

random.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
ballRand (T const &Radius)
template<typename T >
detail::tvec2< T > circularRand (T const &Radius)
template<typename T >
detail::tvec2< T > diskRand (T const &Radius)
template<typename genType >
genType gaussRand (genType const &Mean, genType const &Deviation)
template<typename genType >
genType linearRand (genType const &Min, genType const &Max)
template<typename T >
detail::tvec3< T > sphericalRand (T const &Radius)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_random: Random number generation

+
Date:
2011-09-18 / 2011-09-18
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+
+GLM_GTX_random: Random (extended)
+ +

Definition in file gtc/random.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00093_source.html b/doc/api-0.9.3/a00093_source.html new file mode 100644 index 00000000..b762b289 --- /dev/null +++ b/doc/api-0.9.3/a00093_source.html @@ -0,0 +1,130 @@ + + + + +random.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

random.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 #ifndef GLM_GTC_random
+00041 #define GLM_GTC_random GLM_VERSION
+00042 
+00043 // Dependency:
+00044 #include "../glm.hpp"
+00045 #include "../gtc/half_float.hpp"
+00046 
+00047 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00048 #       pragma message("GLM: GLM_GTC_random extension included")
+00049 #endif
+00050 
+00051 namespace glm
+00052 {
+00055         
+00062         template <typename genType> 
+00063         genType linearRand(
+00064                 genType const & Min, 
+00065                 genType const & Max);
+00066 
+00072         template <typename genType>
+00073         genType gaussRand(
+00074                 genType const & Mean, 
+00075                 genType const & Deviation);
+00076         
+00081         template <typename T> 
+00082         detail::tvec2<T> circularRand(
+00083                 T const & Radius); 
+00084         
+00089         template <typename T> 
+00090         detail::tvec3<T> sphericalRand(
+00091                 T const & Radius); 
+00092         
+00097         template <typename T> 
+00098         detail::tvec2<T> diskRand(
+00099                 T const & Radius); 
+00100         
+00105         template <typename T>
+00106         GLM_FUNC_QUALIFIER detail::tvec3<T> ballRand(
+00107                 T const & Radius);
+00108         
+00110 }//namespace glm
+00111 
+00112 #include "random.inl"
+00113 
+00114 #endif//GLM_GTC_random
+
+
+ + + diff --git a/doc/api-0.9.3/a00094.html b/doc/api-0.9.3/a00094.html new file mode 100644 index 00000000..eaa0cf6a --- /dev/null +++ b/doc/api-0.9.3/a00094.html @@ -0,0 +1,180 @@ + + + + +random.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

random.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T >
compRand1 ()
+template<>
float compRand1 ()
+template<typename T >
compRand1 (T Min, T Max)
+template<typename T >
detail::tvec2< T > compRand2 (const detail::tvec2< T > &Min, const detail::tvec2< T > &Max)
+template<typename T >
detail::tvec2< T > compRand2 (T Min, T Max)
+template<typename T >
detail::tvec3< T > compRand3 (const detail::tvec3< T > &Min, const detail::tvec3< T > &Max)
+template<typename T >
detail::tvec3< T > compRand3 (T Min, T Max)
+template<typename T >
detail::tvec3< T > compRand4 (const detail::tvec4< T > &Min, const detail::tvec4< T > &Max)
+template<typename T >
detail::tvec4< T > compRand4 (T Min, T Max)
+template<typename T >
gaussRand1 (T mean, T std_deviation)
+template<typename T >
detail::tvec2< T > gaussRand2 (T mean, const detail::tvec2< T > &std_deviation)
+template<typename T >
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, const detail::tvec2< T > &std_deviation)
+template<typename T >
detail::tvec2< T > gaussRand2 (T mean, T std_deviation)
+template<typename T >
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, T std_deviation)
+template<typename T >
detail::tvec3< T > gaussRand3 (T mean, const detail::tvec3< T > &std_deviation)
+template<typename T >
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, const detail::tvec3< T > &std_deviation)
+template<typename T >
detail::tvec3< T > gaussRand3 (T mean, T std_deviation)
+template<typename T >
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, T std_deviation)
+template<typename T >
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, T std_deviation)
+template<typename T >
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, const detail::tvec4< T > &std_deviation)
+template<typename T >
detail::tvec4< T > gaussRand4 (T mean, const detail::tvec4< T > &std_deviation)
+template<typename T >
detail::tvec4< T > gaussRand4 (T mean, T std_deviation)
+template<typename T >
detail::tvec2< T > normalizedRand2 ()
+template<typename T >
detail::tvec2< T > normalizedRand2 (T Min, T Max)
+template<typename T >
detail::tvec3< T > normalizedRand3 (T Min, T Max)
+template<typename T >
detail::tvec3< T > normalizedRand3 ()
template<typename T >
signedRand1 ()
+template<>
float signedRand1 ()
+template<typename T >
detail::tvec2< T > signedRand2 ()
+template<typename T >
detail::tvec3< T > signedRand3 ()
+template<typename T >
detail::tvec4< T > signedRand4 ()
+template<typename T >
detail::tvec2< T > vecRand2 ()
+template<typename T >
detail::tvec2< T > vecRand2 (T MinRadius, T MaxRadius)
+template<typename T >
detail::tvec3< T > vecRand3 (T MinRadius, T MaxRadius)
+template<typename T >
detail::tvec3< T > vecRand3 ()
+template<typename T >
detail::tvec4< T > vecRand4 ()
+template<typename T >
detail::tvec4< T > vecRand4 (T MinRadius, T MaxRadius)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_random: Random

+
Date:
2006-01-16 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+ +

Definition in file gtx/random.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00094_source.html b/doc/api-0.9.3/a00094_source.html new file mode 100644 index 00000000..0e052fc3 --- /dev/null +++ b/doc/api-0.9.3/a00094_source.html @@ -0,0 +1,148 @@ + + + + +random.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

random.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_random
+00040 #define GLM_GTX_random GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtc/random.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_random extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057     template <typename T> T signedRand1();
+00058         
+00059         template <> float signedRand1(); 
+00060     template <> double signedRand1(); 
+00061     template <typename T> detail::tvec2<T> signedRand2(); 
+00062     template <typename T> detail::tvec3<T> signedRand3(); 
+00063     template <typename T> detail::tvec4<T> signedRand4(); 
+00064     
+00065         template <typename T> detail::tvec2<T> normalizedRand2(); 
+00066         template <typename T> detail::tvec2<T> normalizedRand2(T Min, T Max); 
+00067         template <typename T> detail::tvec3<T> normalizedRand3(); 
+00068         template <typename T> detail::tvec3<T> normalizedRand3(T Min, T Max); 
+00069 
+00070     template <typename T> T compRand1(); 
+00071         template <> float compRand1(); 
+00072     template <> double compRand1(); 
+00073     template <typename T> T compRand1(T Min, T Max); 
+00074     template <typename T> detail::tvec2<T> compRand2(T Min, T Max); 
+00075     template <typename T> detail::tvec3<T> compRand3(T Min, T Max); 
+00076     template <typename T> detail::tvec4<T> compRand4(T Min, T Max); 
+00077     template <typename T> detail::tvec2<T> compRand2(const detail::tvec2<T>& Min, const detail::tvec2<T>& Max); 
+00078     template <typename T> detail::tvec3<T> compRand3(const detail::tvec3<T>& Min, const detail::tvec3<T>& Max); 
+00079     template <typename T> detail::tvec3<T> compRand4(const detail::tvec4<T>& Min, const detail::tvec4<T>& Max); 
+00080 
+00081     template <typename T> detail::tvec2<T> vecRand2(); 
+00082     template <typename T> detail::tvec2<T> vecRand2(T MinRadius, T MaxRadius); 
+00083     template <typename T> detail::tvec3<T> vecRand3(); 
+00084     template <typename T> detail::tvec3<T> vecRand3(T MinRadius, T MaxRadius); 
+00085     template <typename T> detail::tvec4<T> vecRand4(); 
+00086     template <typename T> detail::tvec4<T> vecRand4(T MinRadius, T MaxRadius); 
+00087 
+00088     template <typename T> T gaussRand1(T mean, T std_deviation); 
+00089     template <typename T> detail::tvec2<T> gaussRand2(T mean, T std_deviation); 
+00090     template <typename T> detail::tvec3<T> gaussRand3(T mean, T std_deviation); 
+00091     template <typename T> detail::tvec4<T> gaussRand4(T mean, T std_deviation); 
+00092     template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, T std_deviation); 
+00093     template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, T std_deviation); 
+00094     template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, T std_deviation); 
+00095     template <typename T> detail::tvec2<T> gaussRand2(T  mean, const detail::tvec2<T>& std_deviation); 
+00096     template <typename T> detail::tvec3<T> gaussRand3(T  mean, const detail::tvec3<T>& std_deviation); 
+00097     template <typename T> detail::tvec4<T> gaussRand4(T  mean, const detail::tvec4<T>& std_deviation); 
+00098     template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, const detail::tvec2<T>& std_deviation); 
+00099     template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, const detail::tvec3<T>& std_deviation); 
+00100     template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, const detail::tvec4<T>& std_deviation); 
+00101 
+00103 }//namespace glm
+00104 
+00105 #include "random.inl"
+00106 
+00107 #endif//GLM_GTX_random
+
+
+ + + diff --git a/doc/api-0.9.3/a00095.html b/doc/api-0.9.3/a00095.html new file mode 100644 index 00000000..2766840d --- /dev/null +++ b/doc/api-0.9.3/a00095.html @@ -0,0 +1,72 @@ + + + + +raw_data.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

raw_data.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Typedefs

typedef uint8 byte
typedef uint32 dword
typedef uint64 qword
typedef uint16 word
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_raw_data: Raw data

+
Date:
2008-11-19 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file raw_data.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00095_source.html b/doc/api-0.9.3/a00095_source.html new file mode 100644 index 00000000..07b362d9 --- /dev/null +++ b/doc/api-0.9.3/a00095_source.html @@ -0,0 +1,110 @@ + + + + +raw_data.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

raw_data.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_raw_data
+00039 #define GLM_GTX_raw_data GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 #include "../gtc/type_precision.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_raw_data extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         typedef uint8           byte;
+00057 
+00060         typedef uint16          word;
+00061 
+00064         typedef uint32          dword;
+00065 
+00068         typedef uint64          qword;
+00069 
+00071 }// namespace glm
+00072 
+00073 #include "raw_data.inl"
+00074 
+00075 #endif//GLM_GTX_raw_data
+
+
+ + + diff --git a/doc/api-0.9.2/a00212.html b/doc/api-0.9.3/a00096.html similarity index 58% rename from doc/api-0.9.2/a00212.html rename to doc/api-0.9.3/a00096.html index 924e3766..27d25483 100644 --- a/doc/api-0.9.2/a00212.html +++ b/doc/api-0.9.3/a00096.html @@ -2,18 +2,18 @@ -glm::gtx::reciprocal Namespace Reference +reciprocal.hpp File Reference - +
@@ -45,45 +37,56 @@
-
glm::gtx::reciprocal Namespace Reference
+

reciprocal.hpp File Reference

-

< GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions. -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- + - + - + - + - + - + - + - + - + - + - + - +

Functions

template<typename genType >
genType acot (genType const &x)
genType acot (genType const &x)
template<typename genType >
genType acoth (genType const &x)
genType acoth (genType const &x)
template<typename genType >
genType acsc (genType const &x)
genType acsc (genType const &x)
template<typename genType >
genType acsch (genType const &x)
genType acsch (genType const &x)
template<typename genType >
genType asec (genType const &x)
genType asec (genType const &x)
template<typename genType >
genType asech (genType const &x)
genType asech (genType const &x)
template<typename genType >
genType cot (genType const &angle)
genType cot (genType const &angle)
template<typename genType >
genType coth (genType const &angle)
genType coth (genType const &angle)
template<typename genType >
genType csc (genType const &angle)
genType csc (genType const &angle)
template<typename genType >
genType csch (genType const &angle)
genType csch (genType const &angle)
template<typename genType >
genType sec (genType const &angle)
genType sec (genType const &angle)
template<typename genType >
genType sech (genType const &angle)
genType sech (genType const &angle)
-

Detailed Description

-

< GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_reciprocal: Reciprocal

+
Date:
2008-10-09 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file reciprocal.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00096_source.html b/doc/api-0.9.3/a00096_source.html new file mode 100644 index 00000000..eab305b9 --- /dev/null +++ b/doc/api-0.9.3/a00096_source.html @@ -0,0 +1,137 @@ + + + + +reciprocal.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

reciprocal.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_reciprocal
+00039 #define GLM_GTX_reciprocal GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_reciprocal extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00056         template <typename genType> 
+00057         genType sec(genType const & angle);
+00058 
+00062         template <typename genType> 
+00063         genType csc(genType const & angle);
+00064                 
+00068         template <typename genType> 
+00069         genType cot(genType const & angle);
+00070 
+00073         template <typename genType> 
+00074         genType asec(genType const & x);
+00075 
+00078         template <typename genType> 
+00079         genType acsc(genType const & x);
+00080                 
+00083         template <typename genType> 
+00084         genType acot(genType const & x);
+00085 
+00088         template <typename genType> 
+00089         genType sech(genType const & angle);
+00090 
+00093         template <typename genType> 
+00094         genType csch(genType const & angle);
+00095                 
+00098         template <typename genType> 
+00099         genType coth(genType const & angle);
+00100 
+00103         template <typename genType> 
+00104         genType asech(genType const & x);
+00105 
+00108         template <typename genType> 
+00109         genType acsch(genType const & x);
+00110                 
+00113         template <typename genType> 
+00114         genType acoth(genType const & x);
+00115 
+00117 }//namespace glm
+00118 
+00119 #include "reciprocal.inl"
+00120 
+00121 #endif//GLM_GTX_reciprocal
+
+
+ + + diff --git a/doc/api-0.9.3/a00097.html b/doc/api-0.9.3/a00097.html new file mode 100644 index 00000000..6870459b --- /dev/null +++ b/doc/api-0.9.3/a00097.html @@ -0,0 +1,90 @@ + + + + +rotate_vector.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

rotate_vector.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
detail::tmat4x4< T > orientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up)
template<typename T >
detail::tvec2< T > rotate (detail::tvec2< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal)
template<typename T >
detail::tvec4< T > rotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal)
template<typename T >
detail::tvec3< T > rotateX (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateX (detail::tvec4< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotateY (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateY (detail::tvec4< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotateZ (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateZ (detail::tvec4< T > const &v, T const &angle)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_rotate_vector: Rotate vector

+
Date:
2006-11-02 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_transform: Extented transformation matrices (dependence)
+ +

Definition in file rotate_vector.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00097_source.html b/doc/api-0.9.3/a00097_source.html new file mode 100644 index 00000000..6461ab06 --- /dev/null +++ b/doc/api-0.9.3/a00097_source.html @@ -0,0 +1,155 @@ + + + + +rotate_vector.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

rotate_vector.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_rotate_vector
+00040 #define GLM_GTX_rotate_vector GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/transform.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_rotate_vector extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename T> 
+00058         detail::tvec2<T> rotate(
+00059         detail::tvec2<T> const & v, 
+00060                 T const & angle);
+00061                 
+00064         template <typename T> 
+00065         detail::tvec3<T> rotate(
+00066         detail::tvec3<T> const & v, 
+00067                 T const & angle, 
+00068         detail::tvec3<T> const & normal);
+00069                 
+00072         template <typename T> 
+00073         detail::tvec4<T> rotate(
+00074         detail::tvec4<T> const & v, 
+00075         T const & angle, 
+00076                 detail::tvec3<T> const & normal);
+00077                 
+00080         template <typename T> 
+00081         detail::tvec3<T> rotateX(
+00082         detail::tvec3<T> const & v, 
+00083                 T const & angle);
+00084 
+00087         template <typename T> 
+00088         detail::tvec3<T> rotateY(
+00089                 detail::tvec3<T> const & v, 
+00090                 T const & angle);
+00091                 
+00094         template <typename T> 
+00095         detail::tvec3<T> rotateZ(
+00096         detail::tvec3<T> const & v, 
+00097                 T const & angle);
+00098                 
+00101         template <typename T> 
+00102         detail::tvec4<T> rotateX(
+00103         detail::tvec4<T> const & v, 
+00104                 T const & angle);
+00105                 
+00108         template <typename T> 
+00109         detail::tvec4<T> rotateY(
+00110         detail::tvec4<T> const & v, 
+00111                 T const & angle);
+00112                 
+00115         template <typename T> 
+00116         detail::tvec4<T> rotateZ(
+00117         detail::tvec4<T> const & v, 
+00118                 T const & angle);
+00119                 
+00122         template <typename T> 
+00123         detail::tmat4x4<T> orientation(
+00124         detail::tvec3<T> const & Normal, 
+00125         detail::tvec3<T> const & Up);
+00126 
+00128 }//namespace glm
+00129 
+00130 #include "rotate_vector.inl"
+00131 
+00132 #endif//GLM_GTX_rotate_vector
+
+
+ + + diff --git a/doc/api-0.9.3/a00098.html b/doc/api-0.9.3/a00098.html new file mode 100644 index 00000000..cb83ae6a --- /dev/null +++ b/doc/api-0.9.3/a00098.html @@ -0,0 +1,63 @@ + + + + +setup.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

setup.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-11-13 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file setup.hpp.

+
+ + + diff --git a/doc/api-0.9.2/a00100_source.html b/doc/api-0.9.3/a00098_source.html similarity index 62% rename from doc/api-0.9.2/a00100_source.html rename to doc/api-0.9.3/a00098_source.html index 414f21bb..0ddb20a1 100644 --- a/doc/api-0.9.2/a00100_source.html +++ b/doc/api-0.9.3/a00098_source.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
setup.hpp
+

setup.hpp

-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2006-11-13
-00005 // Updated : 2011-01-26
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/setup.hpp
-00009 
-00010 #ifndef glm_setup
-00011 #define glm_setup
-00012 
-00014 // Version
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
 00015 
-00016 #define GLM_VERSION                                     92
-00017 #define GLM_VERSION_MAJOR                       0
-00018 #define GLM_VERSION_MINOR                       9
-00019 #define GLM_VERSION_PATCH                       2
-00020 #define GLM_VERSION_REVISION            6
-00021 
-00023 // Compiler
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
 00024 
-00025 // User defines: GLM_FORCE_COMPILER_UNKNOWN
-00026 // TODO ? __llvm__ 
+00025 
+00026 
 00027 
-00028 #define GLM_COMPILER_UNKNOWN            0x00000000
-00029 
-00030 // Visual C++ defines
-00031 #define GLM_COMPILER_VC                         0x01000000
-00032 #define GLM_COMPILER_VC2                        0x01000010
-00033 #define GLM_COMPILER_VC4                        0x01000020
-00034 #define GLM_COMPILER_VC5                        0x01000030
-00035 #define GLM_COMPILER_VC6                        0x01000040
-00036 #define GLM_COMPILER_VC2002                     0x01000050
-00037 #define GLM_COMPILER_VC2003                     0x01000060
-00038 #define GLM_COMPILER_VC2005                     0x01000070
-00039 #define GLM_COMPILER_VC2008                     0x01000080
-00040 #define GLM_COMPILER_VC2010                     0x01000090
-00041 #define GLM_COMPILER_VC2011                     0x010000A0
-00042 
-00043 // GCC defines
-00044 #define GLM_COMPILER_GCC            0x02000000
-00045 #define GLM_COMPILER_GCC_LLVM       0x02000001
-00046 #define GLM_COMPILER_GCC_CLANG      0x02000002
-00047 #define GLM_COMPILER_GCC30                      0x02000010
-00048 #define GLM_COMPILER_GCC31                      0x02000020
-00049 #define GLM_COMPILER_GCC32                      0x02000030
-00050 #define GLM_COMPILER_GCC33                      0x02000040
-00051 #define GLM_COMPILER_GCC34                      0x02000050
-00052 #define GLM_COMPILER_GCC35                      0x02000060
-00053 #define GLM_COMPILER_GCC40                      0x02000070
-00054 #define GLM_COMPILER_GCC41                      0x02000080
-00055 #define GLM_COMPILER_GCC42                      0x02000090
-00056 #define GLM_COMPILER_GCC43                      0x020000A0
-00057 #define GLM_COMPILER_GCC44                      0x020000B0
-00058 #define GLM_COMPILER_GCC45                      0x020000C0
-00059 #define GLM_COMPILER_GCC46                      0x020000D0
-00060 #define GLM_COMPILER_GCC47                      0x020000E0
-00061 #define GLM_COMPILER_GCC48                      0x020000F0
-00062 #define GLM_COMPILER_GCC49                      0x02000100
-00063 #define GLM_COMPILER_GCC50                      0x02000200
+00028 
+00029 #ifndef glm_setup
+00030 #define glm_setup
+00031 
+00033 // Version
+00034 
+00035 #define GLM_VERSION                                     93
+00036 #define GLM_VERSION_MAJOR                       0
+00037 #define GLM_VERSION_MINOR                       9
+00038 #define GLM_VERSION_PATCH                       3
+00039 #define GLM_VERSION_REVISION            0
+00040 
+00042 // Platform
+00043 
+00044 #define GLM_PLATFORM_UNKNOWN            0x00000000
+00045 #define GLM_PLATFORM_WINDOWS            0x00010000
+00046 #define GLM_PLATFORM_LINUX                      0x00020000
+00047 #define GLM_PLATFORM_MACOSX                     0x00040000
+00048 #define GLM_PLATFORM_IOS                        0x00080000
+00049 #define GLM_PLATFORM_ANDROID            0x00100000
+00050 
+00051 #ifdef GLM_FORCE_PLATFORM_UNKNOWN
+00052 #       define GLM_PLATFORM GLM_PLATFORM_UNKNOWN
+00053 #elif defined(_WIN32)
+00054 #       define GLM_PLATFORM GLM_PLATFORM_WINDOWS
+00055 #elif defined(TARGET_OS_IPHONE) || defined(TARGET_IPHONE_SIMULATOR)
+00056 #       define GLM_PLATFORM GLM_PLATFORM_IOS
+00057 #elif defined(__APPLE__)
+00058 #       define GLM_PLATFORM GLM_PLATFORM_MACOSX
+00059 #elif defined(ANDROID)
+00060 #       define GLM_PLATFORM GLM_PLATFORM_ANDROID
+00061 #else
+00062 #       define GLM_PLATFORM GLM_PLATFORM_UNKNOWN
+00063 #endif//
 00064 
-00065 // G++ command line to display defined
-00066 // echo "" | g++ -E -dM -x c++ - | sort
+00066 // Compiler
 00067 
-00068 // Borland C++ defines. How to identify BC?
-00069 #define GLM_COMPILER_BC                         0x04000000
-00070 #define GLM_COMPILER_BCB4                       0x04000100
-00071 #define GLM_COMPILER_BCB5                       0x04000200
-00072 #define GLM_COMPILER_BCB6                       0x04000300
-00073 //#define GLM_COMPILER_BCBX                     0x04000400 // What's the version value?
-00074 #define GLM_COMPILER_BCB2009            0x04000500
-00075 
-00076 // CodeWarrior
-00077 #define GLM_COMPILER_CODEWARRIOR        0x08000000
-00078 
-00079 // CUDA
-00080 #define GLM_COMPILER_CUDA           0x10000000
-00081 #define GLM_COMPILER_CUDA30                     0x10000010
-00082 #define GLM_COMPILER_CUDA31                     0x10000020
-00083 #define GLM_COMPILER_CUDA32                     0x10000030
-00084 #define GLM_COMPILER_CUDA40                     0x10000040
+00068 // User defines: GLM_FORCE_COMPILER_UNKNOWN
+00069 // TODO ? __llvm__ 
+00070 
+00071 #define GLM_COMPILER_UNKNOWN            0x00000000
+00072 
+00073 // Visual C++ defines
+00074 #define GLM_COMPILER_VC                         0x01000000
+00075 #define GLM_COMPILER_VC2                        0x01000010
+00076 #define GLM_COMPILER_VC4                        0x01000020
+00077 #define GLM_COMPILER_VC5                        0x01000030
+00078 #define GLM_COMPILER_VC6                        0x01000040
+00079 #define GLM_COMPILER_VC2002                     0x01000050
+00080 #define GLM_COMPILER_VC2003                     0x01000060
+00081 #define GLM_COMPILER_VC2005                     0x01000070
+00082 #define GLM_COMPILER_VC2008                     0x01000080
+00083 #define GLM_COMPILER_VC2010                     0x01000090
+00084 #define GLM_COMPILER_VC2011                     0x010000A0
 00085 
-00086 // Clang
-00087 #define GLM_COMPILER_CLANG          0x20000000
-00088 #define GLM_COMPILER_CLANG26            0x20000010
-00089 #define GLM_COMPILER_CLANG27            0x20000020
-00090 #define GLM_COMPILER_CLANG28            0x20000030
-00091 #define GLM_COMPILER_CLANG29            0x20000040
-00092 
-00093 // LLVM GCC
-00094 #define GLM_COMPILER_LLVM_GCC           0x40000000
-00095 
-00096 // Build model
-00097 #define GLM_MODEL_32                            0x00000010
-00098 #define GLM_MODEL_64                            0x00000020
-00099 
-00100 // Force generic C++ compiler
-00101 #ifdef GLM_FORCE_COMPILER_UNKNOWN
-00102 #               define GLM_COMPILER GLM_COMPILER_UNKNOWN
-00103 
-00104 // CUDA
-00105 #elif defined(__CUDACC__)
-00106 #       define GLM_COMPILER GLM_COMPILER_CUDA
+00086 // GCC defines
+00087 #define GLM_COMPILER_GCC            0x02000000
+00088 #define GLM_COMPILER_GCC_LLVM       0x02000001
+00089 #define GLM_COMPILER_GCC_CLANG      0x02000002
+00090 #define GLM_COMPILER_GCC30                      0x02000010
+00091 #define GLM_COMPILER_GCC31                      0x02000020
+00092 #define GLM_COMPILER_GCC32                      0x02000030
+00093 #define GLM_COMPILER_GCC33                      0x02000040
+00094 #define GLM_COMPILER_GCC34                      0x02000050
+00095 #define GLM_COMPILER_GCC35                      0x02000060
+00096 #define GLM_COMPILER_GCC40                      0x02000070
+00097 #define GLM_COMPILER_GCC41                      0x02000080
+00098 #define GLM_COMPILER_GCC42                      0x02000090
+00099 #define GLM_COMPILER_GCC43                      0x020000A0
+00100 #define GLM_COMPILER_GCC44                      0x020000B0
+00101 #define GLM_COMPILER_GCC45                      0x020000C0
+00102 #define GLM_COMPILER_GCC46                      0x020000D0
+00103 #define GLM_COMPILER_GCC47                      0x020000E0
+00104 #define GLM_COMPILER_GCC48                      0x020000F0
+00105 #define GLM_COMPILER_GCC49                      0x02000100
+00106 #define GLM_COMPILER_GCC50                      0x02000200
 00107 
-00108 // Visual C++
-00109 #elif defined(_MSC_VER)
-00110 #       if _MSC_VER == 900
-00111 #               define GLM_COMPILER GLM_COMPILER_VC2
-00112 #       elif _MSC_VER == 1000
-00113 #               define GLM_COMPILER GLM_COMPILER_VC4
-00114 #       elif _MSC_VER == 1100
-00115 #               define GLM_COMPILER GLM_COMPILER_VC5
-00116 #       elif _MSC_VER == 1200
-00117 #               define GLM_COMPILER GLM_COMPILER_VC6
-00118 #       elif _MSC_VER == 1300
-00119 #               define GLM_COMPILER GLM_COMPILER_VC2002
-00120 #       elif _MSC_VER == 1310
-00121 #               define GLM_COMPILER GLM_COMPILER_VC2003
-00122 #       elif _MSC_VER == 1400
-00123 #               define GLM_COMPILER GLM_COMPILER_VC2005
-00124 #       elif _MSC_VER == 1500
-00125 #               define GLM_COMPILER GLM_COMPILER_VC2008
-00126 #       elif _MSC_VER == 1600
-00127 #               define GLM_COMPILER GLM_COMPILER_VC2010
-00128 #       elif _MSC_VER == 1700
-00129 #               define GLM_COMPILER GLM_COMPILER_VC2011
-00130 #       else//_MSC_VER
-00131 #               define GLM_COMPILER GLM_COMPILER_VC
-00132 #       endif//_MSC_VER
-00133 
-00134 // G++
-00135 #elif defined(__GNUC__) || defined(__llvm__) || defined(__clang__)
-00136 #   if defined (__llvm__)
-00137 #       define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_LLVM
-00138 #   elif defined (__clang__)
-00139 #       define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_CLANG
-00140 #   else
-00141 #       define GLM_COMPILER_GCC_EXTRA 0
-00142 #   endif
-00143 #
-00144 #       if   (__GNUC__ == 3) && (__GNUC_MINOR__ == 2)
-00145 #               define GLM_COMPILER GLM_COMPILER_GCC32
-00146 #       elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 3)
-00147 #               define GLM_COMPILER GLM_COMPILER_GCC33
-00148 #       elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 4)
-00149 #               define GLM_COMPILER GLM_COMPILER_GCC34
-00150 #       elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 5)
-00151 #               define GLM_COMPILER GLM_COMPILER_GCC35
-00152 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 0)
-00153 #               define GLM_COMPILER (GLM_COMPILER_GCC40 | GLM_COMPILER_GCC_EXTRA)
-00154 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 1)
-00155 #               define GLM_COMPILER (GLM_COMPILER_GCC41 | GLM_COMPILER_GCC_EXTRA)
-00156 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
-00157 #               define GLM_COMPILER (GLM_COMPILER_GCC42 | GLM_COMPILER_GCC_EXTRA)
-00158 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
-00159 #               define GLM_COMPILER (GLM_COMPILER_GCC43 | GLM_COMPILER_GCC_EXTRA)
-00160 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 4)
-00161 #               define GLM_COMPILER (GLM_COMPILER_GCC44 | GLM_COMPILER_GCC_EXTRA)
-00162 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 5)
-00163 #               define GLM_COMPILER (GLM_COMPILER_GCC45 | GLM_COMPILER_GCC_EXTRA)
-00164 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 6)
-00165 #               define GLM_COMPILER (GLM_COMPILER_GCC46 | GLM_COMPILER_GCC_EXTRA)
-00166 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 7)
-00167 #               define GLM_COMPILER (GLM_COMPILER_GCC47 | GLM_COMPILER_GCC_EXTRA)
-00168 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
-00169 #               define GLM_COMPILER (GLM_COMPILER_GCC48 | GLM_COMPILER_GCC_EXTRA)
-00170 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 9)
-00171 #               define GLM_COMPILER (GLM_COMPILER_GCC49 | GLM_COMPILER_GCC_EXTRA)
-00172 #       elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 0)
-00173 #               define GLM_COMPILER (GLM_COMPILER_GCC50 | GLM_COMPILER_GCC_EXTRA)
-00174 #       else
-00175 #               define GLM_COMPILER (GLM_COMPILER_GCC | GLM_COMPILER_GCC_EXTRA)
-00176 #       endif
-00177 
-00178 // Borland C++
-00179 #elif defined(_BORLANDC_)
-00180 #       if defined(VER125)
-00181 #               define GLM_COMPILER GLM_COMPILER_BCB4
-00182 #       elif defined(VER130)
-00183 #               define GLM_COMPILER GLM_COMPILER_BCB5
-00184 #       elif defined(VER140)
-00185 #               define GLM_COMPILER GLM_COMPILER_BCB6
-00186 #       elif defined(VER200)
-00187 #               define GLM_COMPILER GLM_COMPILER_BCB2009
-00188 #       else
-00189 #               define GLM_COMPILER GLM_COMPILER_BC
-00190 #       endif
+00108 // G++ command line to display defined
+00109 // echo "" | g++ -E -dM -x c++ - | sort
+00110 
+00111 // Borland C++ defines. How to identify BC?
+00112 #define GLM_COMPILER_BC                         0x04000000
+00113 #define GLM_COMPILER_BCB4                       0x04000100
+00114 #define GLM_COMPILER_BCB5                       0x04000200
+00115 #define GLM_COMPILER_BCB6                       0x04000300
+00116 //#define GLM_COMPILER_BCBX                     0x04000400 // What's the version value?
+00117 #define GLM_COMPILER_BCB2009            0x04000500
+00118 
+00119 // CodeWarrior
+00120 #define GLM_COMPILER_CODEWARRIOR        0x08000000
+00121 
+00122 // CUDA
+00123 #define GLM_COMPILER_CUDA           0x10000000
+00124 #define GLM_COMPILER_CUDA30                     0x10000010
+00125 #define GLM_COMPILER_CUDA31                     0x10000020
+00126 #define GLM_COMPILER_CUDA32                     0x10000030
+00127 #define GLM_COMPILER_CUDA40                     0x10000040
+00128 
+00129 // Clang
+00130 #define GLM_COMPILER_CLANG          0x20000000
+00131 #define GLM_COMPILER_CLANG26            0x20000010
+00132 #define GLM_COMPILER_CLANG27            0x20000020
+00133 #define GLM_COMPILER_CLANG28            0x20000030
+00134 #define GLM_COMPILER_CLANG29            0x20000040
+00135 
+00136 // LLVM GCC
+00137 #define GLM_COMPILER_LLVM_GCC           0x40000000
+00138 
+00139 // Build model
+00140 #define GLM_MODEL_32                            0x00000010
+00141 #define GLM_MODEL_64                            0x00000020
+00142 
+00143 // Force generic C++ compiler
+00144 #ifdef GLM_FORCE_COMPILER_UNKNOWN
+00145 #               define GLM_COMPILER GLM_COMPILER_UNKNOWN
+00146 
+00147 // CUDA
+00148 #elif defined(__CUDACC__)
+00149 #       define GLM_COMPILER GLM_COMPILER_CUDA
+00150 /*
+00151 #       if CUDA_VERSION < 3000
+00152 #               error "GLM requires CUDA 3.0 or higher"
+00153 #       elif CUDA_VERSION == 3000
+00154 #               define GLM_COMPILER GLM_COMPILER_CUDA30 
+00155 #       elif CUDA_VERSION == 3010
+00156 #               define GLM_COMPILER GLM_COMPILER_CUDA31 
+00157 #       elif CUDA_VERSION == 3020
+00158 #               define GLM_COMPILER GLM_COMPILER_CUDA32 
+00159 #       elif CUDA_VERSION == 4000
+00160 #               define GLM_COMPILER GLM_COMPILER_CUDA40 
+00161 #       else
+00162 #               define GLM_COMPILER GLM_COMPILER_CUDA
+00163 #       endif
+00164 */
+00165 
+00166 // Visual C++
+00167 #elif defined(_MSC_VER)
+00168 #       if _MSC_VER == 900
+00169 #               define GLM_COMPILER GLM_COMPILER_VC2
+00170 #       elif _MSC_VER == 1000
+00171 #               define GLM_COMPILER GLM_COMPILER_VC4
+00172 #       elif _MSC_VER == 1100
+00173 #               define GLM_COMPILER GLM_COMPILER_VC5
+00174 #       elif _MSC_VER == 1200
+00175 #               define GLM_COMPILER GLM_COMPILER_VC6
+00176 #       elif _MSC_VER == 1300
+00177 #               define GLM_COMPILER GLM_COMPILER_VC2002
+00178 #       elif _MSC_VER == 1310
+00179 #               define GLM_COMPILER GLM_COMPILER_VC2003
+00180 #       elif _MSC_VER == 1400
+00181 #               define GLM_COMPILER GLM_COMPILER_VC2005
+00182 #       elif _MSC_VER == 1500
+00183 #               define GLM_COMPILER GLM_COMPILER_VC2008
+00184 #       elif _MSC_VER == 1600
+00185 #               define GLM_COMPILER GLM_COMPILER_VC2010
+00186 #       elif _MSC_VER == 1700
+00187 #               define GLM_COMPILER GLM_COMPILER_VC2011
+00188 #       else//_MSC_VER
+00189 #               define GLM_COMPILER GLM_COMPILER_VC
+00190 #       endif//_MSC_VER
 00191 
-00192 // Codewarrior
-00193 #elif defined(__MWERKS__)
-00194 #       define GLM_COMPILER GLM_COMPILER_CODEWARRIOR
-00195 
-00196 #else
-00197 #       define GLM_COMPILER GLM_COMPILER_UNKNOWN
-00198 #endif
-00199 
-00200 #ifndef GLM_COMPILER
-00201 #error "GLM_COMPILER undefined, your compiler may not be supported by GLM. Add #define GLM_COMPILER 0 to ignore this message."
-00202 #endif//GLM_COMPILER
-00203 
-00204 // Report compiler detection
-00205 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPILER_DISPLAYED))
-00206 #       define GLM_MESSAGE_COMPILER_DISPLAYED
-00207 #       if(GLM_COMPILER & GLM_COMPILER_CUDA)
-00208 #               pragma message("GLM: CUDA compiler detected")
-00209 #       elif(GLM_COMPILER & GLM_COMPILER_VC)
-00210 #               pragma message("GLM: Visual C++ compiler detected")
-00211 #       elif(GLM_COMPILER & GLM_COMPILER_CLANG)
-00212 #               pragma message("GLM: Clang compiler detected")
-00213 #       elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC)
-00214 #               pragma message("GLM: LLVM GCC compiler detected")
-00215 #       elif(GLM_COMPILER & GLM_COMPILER_GCC)
-00216 #       if(GLM_COMPILER == GLM_COMPILER_GCC_LLVM)
-00217 #           pragma message("GLM: LLVM GCC compiler detected")
-00218 #       elif(GLM_COMPILER == GLM_COMPILER_GCC_CLANG)
-00219 #           pragma message("GLM: CLANG compiler detected")
-00220 #       else
-00221 #           pragma message("GLM: GCC compiler detected")
-00222 #       endif
-00223 #       elif(GLM_COMPILER & GLM_COMPILER_BC)
-00224 #               pragma message("GLM: Borland compiler detected but not supported")
-00225 #       elif(GLM_COMPILER & GLM_COMPILER_CODEWARRIOR)
-00226 #               pragma message("GLM: Codewarrior compiler detected but not supported")
-00227 #       else
-00228 #               pragma message("GLM: Compiler not detected")
-00229 #       endif
-00230 #endif//GLM_MESSAGE
-00231 
-00233 // Build model //
-00234 
-00235 #if(GLM_COMPILER & GLM_COMPILER_VC)
-00236 #       if defined(_M_X64)
-00237 #               define GLM_MODEL        GLM_MODEL_64
-00238 #       else
-00239 #               define GLM_MODEL        GLM_MODEL_32
-00240 #       endif//_M_X64
-00241 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
-00242 #       if(defined(__WORDSIZE) && (__WORDSIZE == 64)) || defined(__arch64__) || defined(__LP64__) || defined(__x86_64__)
-00243 #               define GLM_MODEL        GLM_MODEL_64
-00244 #       else
-00245 #               define GLM_MODEL        GLM_MODEL_32
-00246 #       endif//
-00247 #else
-00248 #       define GLM_MODEL        GLM_MODEL_32
-00249 #endif//
-00250 
-00251 #if(!defined(GLM_MODEL) && GLM_COMPILER != 0)
-00252 #error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message."
-00253 #endif//GLM_MODEL
-00254 
-00255 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_MODEL_DISPLAYED))
-00256 #       define GLM_MESSAGE_MODEL_DISPLAYED
-00257 #       if(GLM_MODEL == GLM_MODEL_64)
-00258 #               pragma message("GLM: 64 bits model")
-00259 #       elif(GLM_MODEL == GLM_MODEL_32)
-00260 #               pragma message("GLM: 32 bits model")
-00261 #       endif//GLM_MODEL
-00262 #endif//GLM_MESSAGE
-00263 
-00265 // C++ Version //
-00266 
-00267 // User defines: GLM_FORCE_CXX98
-00268 
-00269 #define GLM_LANG_CXX                    0
-00270 #define GLM_LANG_CXX98                  1
-00271 #define GLM_LANG_CXX0X                  2
-00272 #define GLM_LANG_CXXMS                  3
-00273 #define GLM_LANG_CXXGNU                 4
-00274 
-00275 #if(defined(GLM_FORCE_CXX98))
-00276 #       define GLM_LANG GLM_LANG_CXX98
-00277 #elif(((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) && defined(__GXX_EXPERIMENTAL_CXX0X__)) // -std=c++0x or -std=gnu++0x
-00278 #       define GLM_LANG GLM_LANG_CXX0X
-00279 #elif(GLM_COMPILER == GLM_COMPILER_VC2010) //_MSC_EXTENSIONS for MS language extensions
-00280 #       define GLM_LANG GLM_LANG_CXX0X
-00281 #elif(((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) && defined(__STRICT_ANSI__))
-00282 #       define GLM_LANG GLM_LANG_CXX98
-00283 #elif(((GLM_COMPILER & GLM_COMPILER_VC) == GLM_COMPILER_VC) && !defined(_MSC_EXTENSIONS))
-00284 #       define GLM_LANG GLM_LANG_CXX98
-00285 #else
-00286 #       define GLM_LANG GLM_LANG_CXX
-00287 #endif
-00288 
-00289 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_LANG_DISPLAYED))
-00290 #       define GLM_MESSAGE_LANG_DISPLAYED
-00291 #       if(GLM_LANG == GLM_LANG_CXX98)
-00292 #               pragma message("GLM: C++98")
-00293 #       elif(GLM_LANG == GLM_LANG_CXX0X)
-00294 #               pragma message("GLM: C++0x")
-00295 #       endif//GLM_MODEL
-00296 #endif//GLM_MESSAGE
-00297 
-00299 // Platform 
-00300 
-00301 // User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX
-00302 
-00303 #define GLM_ARCH_PURE           0x0000 //(0x0000)
-00304 #define GLM_ARCH_SSE2           0x0001 //(0x0001)
-00305 #define GLM_ARCH_SSE3           0x0003 //(0x0002 | GLM_ARCH_SSE2)
-00306 #define GLM_ARCH_AVX            0x0007 //(0x0004 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
-00307 
-00308 #if(defined(GLM_FORCE_PURE))
-00309 #       define GLM_ARCH GLM_ARCH_PURE
-00310 #elif(defined(GLM_FORCE_AVX))
-00311 #       define GLM_ARCH GLM_ARCH_AVX
-00312 #elif(defined(GLM_FORCE_SSE3))
-00313 #       define GLM_ARCH GLM_ARCH_SSE3
-00314 #elif(defined(GLM_FORCE_SSE2))
-00315 #       define GLM_ARCH GLM_ARCH_SSE2
-00316 #elif((GLM_COMPILER & GLM_COMPILER_VC) && (defined(_M_IX86) || defined(_M_X64)))
-00317 #       if(defined(_M_CEE_PURE))
-00318 #               define GLM_ARCH GLM_ARCH_PURE
-00319 #       elif(GLM_COMPILER >= GLM_COMPILER_VC2010)
-00320 #               if(_MSC_FULL_VER >= 160031118) //160031118: VC2010 SP1 beta full version
-00321 #                       define GLM_ARCH GLM_ARCH_AVX //GLM_ARCH_AVX (Require SP1)
-00322 #               else
-00323 #                       define GLM_ARCH GLM_ARCH_SSE3
-00324 #               endif
-00325 #       elif(GLM_COMPILER >= GLM_COMPILER_VC2008) 
-00326 #               define GLM_ARCH GLM_ARCH_SSE3
-00327 #       elif(GLM_COMPILER >= GLM_COMPILER_VC2005)
-00328 #               define GLM_ARCH GLM_ARCH_SSE2
-00329 #       else
-00330 #               define GLM_ARCH GLM_ARCH_PURE
-00331 #       endif
-00332 #elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC)
-00333 #       if(defined(__AVX__))
-00334 #               define GLM_ARCH GLM_ARCH_AVX
-00335 #       elif(defined(__SSE3__))
-00336 #               define GLM_ARCH GLM_ARCH_SSE3
-00337 #       elif(defined(__SSE2__))
-00338 #               define GLM_ARCH GLM_ARCH_SSE2
-00339 #       else
-00340 #               define GLM_ARCH GLM_ARCH_PURE
-00341 #       endif
-00342 #elif((GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__)))
-00343 #       if(defined(__AVX__))
-00344 #               define GLM_ARCH GLM_ARCH_AVX
-00345 #       elif(defined(__SSE3__))
-00346 #               define GLM_ARCH GLM_ARCH_SSE3
-00347 #       elif(defined(__SSE2__))
-00348 #               define GLM_ARCH GLM_ARCH_SSE2
-00349 #       else
-00350 #               define GLM_ARCH GLM_ARCH_PURE
-00351 #       endif
-00352 #else
-00353 #       define GLM_ARCH GLM_ARCH_PURE
-00354 #endif
-00355 
-00356 #if(GLM_ARCH != GLM_ARCH_PURE)
-00357 #if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX)
-00358 #       include <immintrin.h>
-00359 #endif//GLM_ARCH
-00360 #if((GLM_ARCH & GLM_ARCH_SSE3) == GLM_ARCH_SSE3)
-00361 #       include <pmmintrin.h>
-00362 #endif//GLM_ARCH
-00363 #if((GLM_ARCH & GLM_ARCH_SSE2) == GLM_ARCH_SSE2)
-00364 #       include <emmintrin.h>
-00365 #endif//GLM_ARCH
-00366 #endif//(GLM_ARCH != GLM_ARCH_PURE)
-00367 
-00368 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_ARCH_DISPLAYED))
-00369 #       define GLM_MESSAGE_ARCH_DISPLAYED
-00370 #       if(GLM_ARCH == GLM_ARCH_PURE)
-00371 #               pragma message("GLM: Platform independent")
-00372 #       elif(GLM_ARCH == GLM_ARCH_SSE2)
-00373 #               pragma message("GLM: SSE2 build platform")
-00374 #       elif(GLM_ARCH == GLM_ARCH_SSE3)
-00375 #               pragma message("GLM: SSE3 build platform")
-00376 #       elif(GLM_ARCH == GLM_ARCH_AVX)
-00377 #               pragma message("GLM: AVX build platform")
-00378 #       endif//GLM_ARCH
-00379 #endif//GLM_MESSAGE
-00380 
-00382 // Components
-00383 
-00384 //#define GLM_FORCE_ONLY_XYZW
-00385 #define GLM_COMPONENT_GLSL_NAMES                        0 
-00386 #define GLM_COMPONENT_ONLY_XYZW                         1 // To disable multiple vector component names access.
-00387 #define GLM_COMPONENT_MS_EXT                            2 // To use anonymous union to provide multiple component names access for class valType. Visual C++ only.
-00388 
-00389 #ifndef GLM_FORCE_ONLY_XYZW
-00390 #       if((GLM_COMPILER & GLM_COMPILER_VC) && defined(_MSC_EXTENSIONS))
-00391 #               define GLM_COMPONENT GLM_COMPONENT_MS_EXT
-00392 #       else
-00393 #               define GLM_COMPONENT GLM_COMPONENT_GLSL_NAMES
-00394 #       endif
-00395 #else
-00396 #       define GLM_COMPONENT GLM_COMPONENT_ONLY_XYZW
-00397 #endif
-00398 
-00399 #if((GLM_COMPONENT == GLM_COMPONENT_MS_EXT) && !(GLM_COMPILER & GLM_COMPILER_VC))
-00400 #       error "GLM_COMPONENT value is GLM_COMPONENT_MS_EXT but this is not allowed with the current compiler."
-00401 #endif
-00402 
-00403 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPONENT_DISPLAYED))
-00404 #       define GLM_MESSAGE_COMPONENT_DISPLAYED
-00405 #       if(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES)
-00406 #               pragma message("GLM: GLSL multiple vector component names")
-00407 #       elif(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW)
-00408 #               pragma message("GLM: x,y,z,w vector component names only")
-00409 #       elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT)
-00410 #               pragma message("GLM: Multiple vector component names through Visual C++ language extensions")
-00411 #       else
-00412 #               error "GLM_COMPONENT value unknown"
-00413 #       endif//GLM_MESSAGE_COMPONENT_DISPLAYED
-00414 #endif//GLM_MESSAGE
-00415 
-00417 // Static assert
-00418 
-00419 #if(GLM_LANG == GLM_LANG_CXX0X)
-00420 #       define GLM_STATIC_ASSERT(x, message) static_assert(x, message)
-00421 #elif(defined(BOOST_STATIC_ASSERT))
-00422 #       define GLM_STATIC_ASSERT(x, message) BOOST_STATIC_ASSERT(x)
-00423 #elif(GLM_COMPILER & GLM_COMPILER_VC)
-00424 #       define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1]
-00425 #else
-00426 #       define GLM_STATIC_ASSERT(x, message)
-00427 #       define GLM_STATIC_ASSERT_NULL
-00428 #endif//GLM_LANG
-00429 
-00431 // Qualifiers 
-00432 
-00433 // User defines: GLM_FORCE_INLINE GLM_FORCE_CUDA
-00434 
-00435 #if(defined(GLM_FORCE_CUDA) || (GLM_COMPILER & GLM_COMPILER_CUDA))
-00436 #   define GLM_CUDA_FUNC_DEF __device__ __host__ 
-00437 #       define GLM_CUDA_FUNC_DECL __device__ __host__ 
-00438 #else
-00439 #   define GLM_CUDA_FUNC_DEF
-00440 #       define GLM_CUDA_FUNC_DECL
-00441 #endif
-00442 
-00443 #if GLM_COMPILER & GLM_COMPILER_GCC
-00444 #define GLM_VAR_USED __attribute__ ((unused))
-00445 #else
-00446 #define GLM_VAR_USED
-00447 #endif
-00448 
-00449 #if(defined(GLM_FORCE_INLINE))
-00450 #   if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005))
-00451 #       define GLM_INLINE __forceinline
-00452 #   elif((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC34))
-00453 #       define GLM_INLINE __attribute__((always_inline))
-00454 #   else
-00455 #       define GLM_INLINE inline
-00456 #   endif//GLM_COMPILER
-00457 #else
-00458 #   define GLM_INLINE inline
-00459 #endif//defined(GLM_FORCE_INLINE)
-00460 
-00461 #define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL
-00462 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE
-00463 
-00465 // Swizzle operators
-00466 
-00467 // User defines: GLM_SWIZZLE_XYZW GLM_SWIZZLE_RGBA GLM_SWIZZLE_STQP GLM_SWIZZLE
-00468 
-00469 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_SWIZZLE_DISPLAYED))
-00470 #       define GLM_MESSAGE_SWIZZLE_DISPLAYED
-00471 #       if(defined(GLM_SWIZZLE))
-00472 #               pragma message("GLM: Full swizzling operator enabled")
-00473 #       elif(!defined(GLM_SWIZZLE_XYZW) && !defined(GLM_SWIZZLE_RGBA) && !defined(GLM_SWIZZLE_STQP) && !defined(GLM_SWIZZLE))
-00474 #               pragma message("GLM: No swizzling operator enabled")
-00475 #       else
-00476 #               pragma message("GLM: Partial swizzling operator enabled")
-00477 #       endif
-00478 #endif//GLM_MESSAGE
-00479 
-00480 #endif//glm_setup
+00192 // G++
+00193 #elif defined(__GNUC__)// || defined(__llvm__) || defined(__clang__)
+00194 #   if defined (__llvm__)
+00195 #       define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_LLVM
+00196 #   elif defined (__clang__)
+00197 #       define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_CLANG
+00198 #   else
+00199 #       define GLM_COMPILER_GCC_EXTRA 0
+00200 #   endif
+00201 #
+00202 #       if   (__GNUC__ == 3) && (__GNUC_MINOR__ == 2)
+00203 #               define GLM_COMPILER GLM_COMPILER_GCC32
+00204 #       elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 3)
+00205 #               define GLM_COMPILER GLM_COMPILER_GCC33
+00206 #       elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 4)
+00207 #               define GLM_COMPILER GLM_COMPILER_GCC34
+00208 #       elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 5)
+00209 #               define GLM_COMPILER GLM_COMPILER_GCC35
+00210 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 0)
+00211 #               define GLM_COMPILER (GLM_COMPILER_GCC40 | GLM_COMPILER_GCC_EXTRA)
+00212 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 1)
+00213 #               define GLM_COMPILER (GLM_COMPILER_GCC41 | GLM_COMPILER_GCC_EXTRA)
+00214 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+00215 #               define GLM_COMPILER (GLM_COMPILER_GCC42 | GLM_COMPILER_GCC_EXTRA)
+00216 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
+00217 #               define GLM_COMPILER (GLM_COMPILER_GCC43 | GLM_COMPILER_GCC_EXTRA)
+00218 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 4)
+00219 #               define GLM_COMPILER (GLM_COMPILER_GCC44 | GLM_COMPILER_GCC_EXTRA)
+00220 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 5)
+00221 #               define GLM_COMPILER (GLM_COMPILER_GCC45 | GLM_COMPILER_GCC_EXTRA)
+00222 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 6)
+00223 #               define GLM_COMPILER (GLM_COMPILER_GCC46 | GLM_COMPILER_GCC_EXTRA)
+00224 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 7)
+00225 #               define GLM_COMPILER (GLM_COMPILER_GCC47 | GLM_COMPILER_GCC_EXTRA)
+00226 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
+00227 #               define GLM_COMPILER (GLM_COMPILER_GCC48 | GLM_COMPILER_GCC_EXTRA)
+00228 #       elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 9)
+00229 #               define GLM_COMPILER (GLM_COMPILER_GCC49 | GLM_COMPILER_GCC_EXTRA)
+00230 #       elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 0)
+00231 #               define GLM_COMPILER (GLM_COMPILER_GCC50 | GLM_COMPILER_GCC_EXTRA)
+00232 #       else
+00233 #               define GLM_COMPILER (GLM_COMPILER_GCC | GLM_COMPILER_GCC_EXTRA)
+00234 #       endif
+00235 
+00236 // Borland C++
+00237 #elif defined(_BORLANDC_)
+00238 #       if defined(VER125)
+00239 #               define GLM_COMPILER GLM_COMPILER_BCB4
+00240 #       elif defined(VER130)
+00241 #               define GLM_COMPILER GLM_COMPILER_BCB5
+00242 #       elif defined(VER140)
+00243 #               define GLM_COMPILER GLM_COMPILER_BCB6
+00244 #       elif defined(VER200)
+00245 #               define GLM_COMPILER GLM_COMPILER_BCB2009
+00246 #       else
+00247 #               define GLM_COMPILER GLM_COMPILER_BC
+00248 #       endif
+00249 
+00250 // Codewarrior
+00251 #elif defined(__MWERKS__)
+00252 #       define GLM_COMPILER GLM_COMPILER_CODEWARRIOR
+00253 
+00254 #else
+00255 #       define GLM_COMPILER GLM_COMPILER_UNKNOWN
+00256 #endif
+00257 
+00258 #ifndef GLM_COMPILER
+00259 #error "GLM_COMPILER undefined, your compiler may not be supported by GLM. Add #define GLM_COMPILER 0 to ignore this message."
+00260 #endif//GLM_COMPILER
+00261 
+00262 // Report compiler detection
+00263 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPILER_DISPLAYED))
+00264 #       define GLM_MESSAGE_COMPILER_DISPLAYED
+00265 #       if(GLM_COMPILER & GLM_COMPILER_CUDA)
+00266 #               pragma message("GLM: CUDA compiler detected")
+00267 #       elif(GLM_COMPILER & GLM_COMPILER_VC)
+00268 #               pragma message("GLM: Visual C++ compiler detected")
+00269 #       elif(GLM_COMPILER & GLM_COMPILER_CLANG)
+00270 #               pragma message("GLM: Clang compiler detected")
+00271 #       elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC)
+00272 #               pragma message("GLM: LLVM GCC compiler detected")
+00273 #       elif(GLM_COMPILER & GLM_COMPILER_GCC)
+00274 #       if(GLM_COMPILER == GLM_COMPILER_GCC_LLVM)
+00275 #           pragma message("GLM: LLVM GCC compiler detected")
+00276 #       elif(GLM_COMPILER == GLM_COMPILER_GCC_CLANG)
+00277 #           pragma message("GLM: CLANG compiler detected")
+00278 #       else
+00279 #           pragma message("GLM: GCC compiler detected")
+00280 #       endif
+00281 #       elif(GLM_COMPILER & GLM_COMPILER_BC)
+00282 #               pragma message("GLM: Borland compiler detected but not supported")
+00283 #       elif(GLM_COMPILER & GLM_COMPILER_CODEWARRIOR)
+00284 #               pragma message("GLM: Codewarrior compiler detected but not supported")
+00285 #       else
+00286 #               pragma message("GLM: Compiler not detected")
+00287 #       endif
+00288 #endif//GLM_MESSAGE
+00289 
+00291 // Build model //
+00292 
+00293 #if(GLM_COMPILER & GLM_COMPILER_VC)
+00294 #       if defined(_M_X64)
+00295 #               define GLM_MODEL        GLM_MODEL_64
+00296 #       else
+00297 #               define GLM_MODEL        GLM_MODEL_32
+00298 #       endif//_M_X64
+00299 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
+00300 #       if(defined(__WORDSIZE) && (__WORDSIZE == 64)) || defined(__arch64__) || defined(__LP64__) || defined(__x86_64__)
+00301 #               define GLM_MODEL        GLM_MODEL_64
+00302 #       else
+00303 #               define GLM_MODEL        GLM_MODEL_32
+00304 #       endif//
+00305 #else
+00306 #       define GLM_MODEL        GLM_MODEL_32
+00307 #endif//
+00308 
+00309 #if(!defined(GLM_MODEL) && GLM_COMPILER != 0)
+00310 #error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message."
+00311 #endif//GLM_MODEL
+00312 
+00313 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_MODEL_DISPLAYED))
+00314 #       define GLM_MESSAGE_MODEL_DISPLAYED
+00315 #       if(GLM_MODEL == GLM_MODEL_64)
+00316 #               pragma message("GLM: 64 bits model")
+00317 #       elif(GLM_MODEL == GLM_MODEL_32)
+00318 #               pragma message("GLM: 32 bits model")
+00319 #       endif//GLM_MODEL
+00320 #endif//GLM_MESSAGE
+00321 
+00323 // C++ Version //
+00324 
+00325 // User defines: GLM_FORCE_CXX98
+00326 
+00327 #define GLM_LANG_CXX                    (0 << 0)
+00328 #define GLM_LANG_CXX98                  ((1 << 1) | GLM_LANG_CXX)
+00329 #define GLM_LANG_CXX03                  ((1 << 2) | GLM_LANG_CXX98)
+00330 #define GLM_LANG_CXX0X                  ((1 << 3) | GLM_LANG_CXX03)
+00331 #define GLM_LANG_CXX11                  ((1 << 4) | GLM_LANG_CXX11)
+00332 #define GLM_LANG_CXXMS                  (1 << 5)
+00333 #define GLM_LANG_CXXGNU                 (1 << 6)
+00334 
+00335 #if(defined(GLM_FORCE_CXX11))
+00336 #       define GLM_LANG GLM_LANG_CXX11
+00337 #elif(defined(GLM_FORCE_CXX03))
+00338 #       define GLM_LANG GLM_LANG_CXX03
+00339 #elif(defined(GLM_FORCE_CXX98))
+00340 #       define GLM_LANG GLM_LANG_CXX98
+00341 #else
+00342 #       if(((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) && defined(__STRICT_ANSI__))
+00343 #               define GLM_LANG GLM_LANG_CXX98
+00344 #       elif(((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) && defined(__GXX_EXPERIMENTAL_CXX0X__)) // -std=c++0x or -std=gnu++0x
+00345 #               define GLM_LANG GLM_LANG_CXX0X
+00346 #       elif(((GLM_COMPILER & GLM_COMPILER_VC) == GLM_COMPILER_VC) && defined(_MSC_EXTENSIONS))
+00347 #               define GLM_LANG GLM_LANG_CXXMS
+00348 #       elif(((GLM_COMPILER & GLM_COMPILER_VC) == GLM_COMPILER_VC) && !defined(_MSC_EXTENSIONS))
+00349 #               if(GLM_COMPILER >= GLM_COMPILER_VC2010)
+00350 #                       define GLM_LANG GLM_LANG_CXX0X
+00351 #               else
+00352 #                       define GLM_LANG GLM_LANG_CXX98
+00353 #               endif//(GLM_COMPILER == GLM_COMPILER_VC2010)
+00354 #       else
+00355 #               define GLM_LANG GLM_LANG_CXX
+00356 #       endif
+00357 #endif
+00358 
+00359 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_LANG_DISPLAYED))
+00360 #       define GLM_MESSAGE_LANG_DISPLAYED
+00361 #       if(GLM_LANG == GLM_LANG_CXX98)
+00362 #               pragma message("GLM: C++98")
+00363 #       elif(GLM_LANG == GLM_LANG_CXX03)
+00364 #               pragma message("GLM: C++03")
+00365 #       elif(GLM_LANG == GLM_LANG_CXX0X)
+00366 #               pragma message("GLM: C++0x")
+00367 #       elif(GLM_LANG == GLM_LANG_CXX11)
+00368 #               pragma message("GLM: C++11")
+00369 #       elif(GLM_LANG == GLM_LANG_CXXGNU)
+00370 #               pragma message("GLM: C++ with GNU language extensions")
+00371 #       elif(GLM_LANG == GLM_LANG_CXXMS)
+00372 #               pragma message("GLM: C++ with VC language extensions")
+00373 #       endif//GLM_MODEL
+00374 #endif//GLM_MESSAGE
+00375 
+00377 // Platform 
+00378 
+00379 // User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX
+00380 
+00381 #define GLM_ARCH_PURE           0x0000 //(0x0000)
+00382 #define GLM_ARCH_SSE2           0x0001 //(0x0001)
+00383 #define GLM_ARCH_SSE3           0x0003 //(0x0002 | GLM_ARCH_SSE2)
+00384 #define GLM_ARCH_AVX            0x0007 //(0x0004 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+00385 
+00386 #if(defined(GLM_FORCE_PURE))
+00387 #       define GLM_ARCH GLM_ARCH_PURE
+00388 #elif(defined(GLM_FORCE_AVX))
+00389 #       define GLM_ARCH GLM_ARCH_AVX
+00390 #elif(defined(GLM_FORCE_SSE3))
+00391 #       define GLM_ARCH GLM_ARCH_SSE3
+00392 #elif(defined(GLM_FORCE_SSE2))
+00393 #       define GLM_ARCH GLM_ARCH_SSE2
+00394 #elif((GLM_COMPILER & GLM_COMPILER_VC) && (defined(_M_IX86) || defined(_M_X64)))
+00395 #       if(defined(_M_CEE_PURE))
+00396 #               define GLM_ARCH GLM_ARCH_PURE
+00397 #       elif(GLM_COMPILER >= GLM_COMPILER_VC2010)
+00398 #               if(_MSC_FULL_VER >= 160031118) //160031118: VC2010 SP1 beta full version
+00399 #                       define GLM_ARCH GLM_ARCH_AVX //GLM_ARCH_AVX (Require SP1)
+00400 #               else
+00401 #                       define GLM_ARCH GLM_ARCH_SSE3
+00402 #               endif
+00403 #       elif(GLM_COMPILER >= GLM_COMPILER_VC2008) 
+00404 #               define GLM_ARCH GLM_ARCH_SSE3
+00405 #       elif(GLM_COMPILER >= GLM_COMPILER_VC2005)
+00406 #               define GLM_ARCH GLM_ARCH_SSE2
+00407 #       else
+00408 #               define GLM_ARCH GLM_ARCH_PURE
+00409 #       endif
+00410 #elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC)
+00411 #       if(defined(__AVX__))
+00412 #               define GLM_ARCH GLM_ARCH_AVX
+00413 #       elif(defined(__SSE3__))
+00414 #               define GLM_ARCH GLM_ARCH_SSE3
+00415 #       elif(defined(__SSE2__))
+00416 #               define GLM_ARCH GLM_ARCH_SSE2
+00417 #       else
+00418 #               define GLM_ARCH GLM_ARCH_PURE
+00419 #       endif
+00420 #elif((GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__)))
+00421 #       if(defined(__AVX__))
+00422 #               define GLM_ARCH GLM_ARCH_AVX
+00423 #       elif(defined(__SSE3__))
+00424 #               define GLM_ARCH GLM_ARCH_SSE3
+00425 #       elif(defined(__SSE2__))
+00426 #               define GLM_ARCH GLM_ARCH_SSE2
+00427 #       else
+00428 #               define GLM_ARCH GLM_ARCH_PURE
+00429 #       endif
+00430 #else
+00431 #       define GLM_ARCH GLM_ARCH_PURE
+00432 #endif
+00433 
+00434 #if(GLM_ARCH != GLM_ARCH_PURE)
+00435 #if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX)
+00436 #       include <immintrin.h>
+00437 #endif//GLM_ARCH
+00438 #if((GLM_ARCH & GLM_ARCH_SSE3) == GLM_ARCH_SSE3)
+00439 #       include <pmmintrin.h>
+00440 #endif//GLM_ARCH
+00441 #if((GLM_ARCH & GLM_ARCH_SSE2) == GLM_ARCH_SSE2)
+00442 #       include <emmintrin.h>
+00443 #endif//GLM_ARCH
+00444 #endif//(GLM_ARCH != GLM_ARCH_PURE)
+00445 
+00446 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_ARCH_DISPLAYED))
+00447 #       define GLM_MESSAGE_ARCH_DISPLAYED
+00448 #       if(GLM_ARCH == GLM_ARCH_PURE)
+00449 #               pragma message("GLM: Platform independent")
+00450 #       elif(GLM_ARCH == GLM_ARCH_SSE2)
+00451 #               pragma message("GLM: SSE2 build platform")
+00452 #       elif(GLM_ARCH == GLM_ARCH_SSE3)
+00453 #               pragma message("GLM: SSE3 build platform")
+00454 #       elif(GLM_ARCH == GLM_ARCH_AVX)
+00455 #               pragma message("GLM: AVX build platform")
+00456 #       endif//GLM_ARCH
+00457 #endif//GLM_MESSAGE
+00458 
+00460 // Support check macros
+00461 
+00462 #define GLM_SUPPORT_ANONYMOUS_UNION() \
+00463         ((GLM_LANG & GLM_LANG_CXX98) == GLM_LANG_CXX98)
+00464 
+00465 #define GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE() \
+00466         (((GLM_LANG & GLM_LANG_CXX11) == GLM_LANG_CXX11) || ((GLM_LANG & GLM_LANG_CXXMS) == GLM_LANG_CXXMS) || ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_LANG == GLM_LANG_CXX0X)))
+00467 
+00468 #define GLM_SUPPORT_SWIZZLE_OPERATOR() \
+00469         (/*defined(GLM_SWIZZLE) && */GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE())
+00470 
+00471 #define GLM_SUPPORT_SWIZZLE_FUNCTION() defined(GLM_SWIZZLE)
+00472 
+00474 // Components
+00475 
+00476 //#define GLM_FORCE_ONLY_XYZW
+00477 #define GLM_COMPONENT_ONLY_XYZW                         0 // To disable multiple vector component names access.
+00478 #define GLM_COMPONENT_CXX98                                     1 //  
+00479 #define GLM_COMPONENT_CXX11                                     2 // To use anonymous union to provide multiple component names access for class valType. Visual C++ only.
+00480 
+00481 #if(GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE() && !defined(GLM_FORCE_ONLY_XYZW))
+00482 #       define GLM_COMPONENT GLM_COMPONENT_CXX11
+00483 #elif(GLM_SUPPORT_ANONYMOUS_UNION() && !defined(GLM_FORCE_ONLY_XYZW))
+00484 #       define GLM_COMPONENT GLM_COMPONENT_CXX98
+00485 #else
+00486 #       define GLM_COMPONENT GLM_COMPONENT_ONLY_XYZW
+00487 #endif
+00488 
+00489 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPONENT_DISPLAYED))
+00490 #       define GLM_MESSAGE_COMPONENT_DISPLAYED
+00491 #       if(GLM_COMPONENT == GLM_COMPONENT_CXX98)
+00492 #               pragma message("GLM: x,y,z,w; r,g,b,a; s,t,p,q component names except of half based vector types")
+00493 #       elif(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW)
+00494 #               pragma message("GLM: x,y,z,w component names for all vector types")
+00495 #       elif(GLM_COMPONENT == GLM_COMPONENT_CXX11)
+00496 #               pragma message("GLM: x,y,z,w; r,g,b,a; s,t,p,q component names for all vector types")
+00497 #       else
+00498 #               error "GLM: GLM_COMPONENT value unknown"
+00499 #       endif//GLM_MESSAGE_COMPONENT_DISPLAYED
+00500 #endif//GLM_MESSAGE
+00501 
+00503 // Static assert
+00504 
+00505 #if(GLM_LANG == GLM_LANG_CXX0X)
+00506 #       define GLM_STATIC_ASSERT(x, message) static_assert(x, message)
+00507 #elif(defined(BOOST_STATIC_ASSERT))
+00508 #       define GLM_STATIC_ASSERT(x, message) BOOST_STATIC_ASSERT(x)
+00509 #elif(GLM_COMPILER & GLM_COMPILER_VC)
+00510 #       define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1]
+00511 #else
+00512 #       define GLM_STATIC_ASSERT(x, message)
+00513 #       define GLM_STATIC_ASSERT_NULL
+00514 #endif//GLM_LANG
+00515 
+00517 // Qualifiers 
+00518 
+00519 // User defines: GLM_FORCE_INLINE GLM_FORCE_CUDA
+00520 
+00521 #if(defined(GLM_FORCE_CUDA) || (GLM_COMPILER & GLM_COMPILER_CUDA))
+00522 #   define GLM_CUDA_FUNC_DEF __device__ __host__ 
+00523 #       define GLM_CUDA_FUNC_DECL __device__ __host__ 
+00524 #else
+00525 #   define GLM_CUDA_FUNC_DEF
+00526 #       define GLM_CUDA_FUNC_DECL
+00527 #endif
+00528 
+00529 #if GLM_COMPILER & GLM_COMPILER_GCC
+00530 #define GLM_VAR_USED __attribute__ ((unused))
+00531 #else
+00532 #define GLM_VAR_USED
+00533 #endif
+00534 
+00535 #if(defined(GLM_FORCE_INLINE))
+00536 #   if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005))
+00537 #       define GLM_INLINE __forceinline
+00538 #   elif((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC34))
+00539 #       define GLM_INLINE __attribute__((always_inline))
+00540 #   else
+00541 #       define GLM_INLINE inline
+00542 #   endif//GLM_COMPILER
+00543 #else
+00544 #   define GLM_INLINE inline
+00545 #endif//defined(GLM_FORCE_INLINE)
+00546 
+00547 #define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL
+00548 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE
+00549 
+00551 // Swizzle operators
+00552 
+00553 // User defines: GLM_SWIZZLE
+00554 
+00555 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_SWIZZLE_DISPLAYED))
+00556 #       define GLM_MESSAGE_SWIZZLE_DISPLAYED
+00557 #       if(GLM_SUPPORT_SWIZZLE_OPERATOR())
+00558 #               pragma message("GLM: Swizzling operators enabled")
+00559 #       elif(GLM_SUPPORT_SWIZZLE_FUNCTION())
+00560 #               pragma message("GLM: Swizzling operators supported through swizzling functions")
+00561 #       else
+00562 #               pragma message("GLM: Swizzling operators disabled")
+00563 #       endif
+00564 #endif//GLM_MESSAGE
+00565 
+00566 #endif//glm_setup
 
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00099_source.html b/doc/api-0.9.3/a00099_source.html new file mode 100644 index 00000000..425d3444 --- /dev/null +++ b/doc/api-0.9.3/a00099_source.html @@ -0,0 +1,229 @@ + + + + +simd_mat4.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

simd_mat4.hpp

+
+
+
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_simd_mat4
+00039 #define GLM_GTX_simd_mat4 GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(GLM_ARCH != GLM_ARCH_PURE)
+00045 
+00046 #if(GLM_ARCH & GLM_ARCH_SSE2)
+00047 #       include "../core/intrinsic_matrix.hpp"
+00048 #       include "../gtx/simd_vec4.hpp"
+00049 #else
+00050 #       error "GLM: GLM_GTX_simd_mat4 requires compiler support of SSE2 through intrinsics"
+00051 #endif
+00052 
+00053 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00054 #       pragma message("GLM: GLM_GTX_simd_mat4 extension included")
+00055 #endif
+00056 
+00057 namespace glm{
+00058 namespace detail
+00059 {
+00062         GLM_ALIGNED_STRUCT(16) fmat4x4SIMD
+00063         {
+00064                 enum ctor{null};
+00065 
+00066                 typedef float value_type;
+00067                 typedef fvec4SIMD col_type;
+00068                 typedef fvec4SIMD row_type;
+00069                 typedef std::size_t size_type;
+00070                 static size_type value_size();
+00071                 static size_type col_size();
+00072                 static size_type row_size();
+00073                 static bool is_matrix();
+00074 
+00075                 fvec4SIMD Data[4];
+00076 
+00078                 // Constructors
+00079 
+00080                 fmat4x4SIMD();
+00081                 explicit fmat4x4SIMD(float const & s);
+00082                 explicit fmat4x4SIMD(
+00083                         float const & x0, float const & y0, float const & z0, float const & w0,
+00084                         float const & x1, float const & y1, float const & z1, float const & w1,
+00085                         float const & x2, float const & y2, float const & z2, float const & w2,
+00086                         float const & x3, float const & y3, float const & z3, float const & w3);
+00087                 explicit fmat4x4SIMD(
+00088                         fvec4SIMD const & v0,
+00089                         fvec4SIMD const & v1,
+00090                         fvec4SIMD const & v2,
+00091                         fvec4SIMD const & v3);
+00092                 explicit fmat4x4SIMD(
+00093                         tmat4x4<float> const & m);
+00094 
+00095                 // Conversions
+00096                 //template <typename U> 
+00097                 //explicit tmat4x4(tmat4x4<U> const & m);
+00098 
+00099                 //explicit tmat4x4(tmat2x2<T> const & x);
+00100                 //explicit tmat4x4(tmat3x3<T> const & x);
+00101                 //explicit tmat4x4(tmat2x3<T> const & x);
+00102                 //explicit tmat4x4(tmat3x2<T> const & x);
+00103                 //explicit tmat4x4(tmat2x4<T> const & x);
+00104                 //explicit tmat4x4(tmat4x2<T> const & x);
+00105                 //explicit tmat4x4(tmat3x4<T> const & x);
+00106                 //explicit tmat4x4(tmat4x3<T> const & x);
+00107 
+00108                 // Accesses
+00109                 fvec4SIMD & operator[](size_type i);
+00110                 fvec4SIMD const & operator[](size_type i) const;
+00111 
+00112                 // Unary updatable operators
+00113                 fmat4x4SIMD & operator= (fmat4x4SIMD const & m);
+00114                 fmat4x4SIMD & operator+= (float const & s);
+00115                 fmat4x4SIMD & operator+= (fmat4x4SIMD const & m);
+00116                 fmat4x4SIMD & operator-= (float const & s);
+00117                 fmat4x4SIMD & operator-= (fmat4x4SIMD const & m);
+00118                 fmat4x4SIMD & operator*= (float const & s);
+00119                 fmat4x4SIMD & operator*= (fmat4x4SIMD const & m);
+00120                 fmat4x4SIMD & operator/= (float const & s);
+00121                 fmat4x4SIMD & operator/= (fmat4x4SIMD const & m);
+00122                 fmat4x4SIMD & operator++ ();
+00123                 fmat4x4SIMD & operator-- ();
+00124         };
+00125 
+00126         // Binary operators
+00127         fmat4x4SIMD operator+ (fmat4x4SIMD const & m, float const & s);
+00128         fmat4x4SIMD operator+ (float const & s, fmat4x4SIMD const & m);
+00129         fmat4x4SIMD operator+ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+00130             
+00131         fmat4x4SIMD operator- (fmat4x4SIMD const & m, float const & s);
+00132         fmat4x4SIMD operator- (float const & s, fmat4x4SIMD const & m);
+00133         fmat4x4SIMD operator- (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+00134 
+00135         fmat4x4SIMD operator* (fmat4x4SIMD const & m, float const & s);
+00136         fmat4x4SIMD operator* (float const & s, fmat4x4SIMD const & m);
+00137 
+00138         fvec4SIMD operator* (fmat4x4SIMD const & m, fvec4SIMD const & v);
+00139         fvec4SIMD operator* (fvec4SIMD const & v, fmat4x4SIMD const & m);
+00140 
+00141         fmat4x4SIMD operator* (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+00142 
+00143         fmat4x4SIMD operator/ (fmat4x4SIMD const & m, float const & s);
+00144         fmat4x4SIMD operator/ (float const & s, fmat4x4SIMD const & m);
+00145 
+00146         fvec4SIMD operator/ (fmat4x4SIMD const & m, fvec4SIMD const & v);
+00147         fvec4SIMD operator/ (fvec4SIMD const & v, fmat4x4SIMD const & m);
+00148 
+00149         fmat4x4SIMD operator/ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+00150 
+00151         // Unary constant operators
+00152         fmat4x4SIMD const operator-  (fmat4x4SIMD const & m);
+00153         fmat4x4SIMD const operator-- (fmat4x4SIMD const & m, int);
+00154         fmat4x4SIMD const operator++ (fmat4x4SIMD const & m, int);
+00155 }//namespace detail
+00156 
+00157         typedef detail::fmat4x4SIMD simdMat4;
+00158 
+00161 
+00164         detail::tmat4x4<float> mat4_cast(
+00165                 detail::fmat4x4SIMD const & x);
+00166 
+00170         detail::fmat4x4SIMD matrixCompMult(
+00171                 detail::fmat4x4SIMD const & x,
+00172                 detail::fmat4x4SIMD const & y);
+00173 
+00178         detail::fmat4x4SIMD outerProduct(
+00179                 detail::fvec4SIMD const & c,
+00180                 detail::fvec4SIMD const & r);
+00181 
+00184         detail::fmat4x4SIMD transpose(
+00185                 detail::fmat4x4SIMD const & x);
+00186 
+00189         float determinant(
+00190                 detail::fmat4x4SIMD const & m);
+00191 
+00194         detail::fmat4x4SIMD inverse(
+00195                 detail::fmat4x4SIMD const & m);
+00196 
+00198 }// namespace glm
+00199 
+00200 #include "simd_mat4.inl"
+00201 
+00202 #endif//(GLM_ARCH != GLM_ARCH_PURE)
+00203 
+00204 #endif//GLM_GTX_simd_mat4
+
+
+ + + diff --git a/doc/api-0.9.3/a00100.html b/doc/api-0.9.3/a00100.html new file mode 100644 index 00000000..4370e916 --- /dev/null +++ b/doc/api-0.9.3/a00100.html @@ -0,0 +1,64 @@ + + + + +simd_vec4.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

simd_vec4.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_simd_vec4: SIMD vec4 type and functions

+
Date:
2009-05-07 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file simd_vec4.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00100_source.html b/doc/api-0.9.3/a00100_source.html new file mode 100644 index 00000000..e5b682a1 --- /dev/null +++ b/doc/api-0.9.3/a00100_source.html @@ -0,0 +1,358 @@ + + + + +simd_vec4.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

simd_vec4.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_simd_vec4
+00039 #define GLM_GTX_simd_vec4 GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(GLM_ARCH != GLM_ARCH_PURE)
+00045 
+00046 #if(GLM_ARCH & GLM_ARCH_SSE2)
+00047 #       include "../core/intrinsic_common.hpp"
+00048 #       include "../core/intrinsic_geometric.hpp"
+00049 #else
+00050 #       error "GLM: GLM_GTX_simd_vec4 requires compiler support of SSE2 through intrinsics"
+00051 #endif
+00052 
+00053 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00054 #       pragma message("GLM: GLM_GTX_simd_vec4 extension included")
+00055 #endif
+00056 
+00057 namespace glm{
+00058 namespace detail
+00059 {
+00062         GLM_ALIGNED_STRUCT(16) fvec4SIMD
+00063         {
+00064                 enum ctor{null};
+00065                 typedef __m128 value_type;
+00066                 typedef std::size_t size_type;
+00067                 static size_type value_size();
+00068 
+00069                 typedef fvec4SIMD type;
+00070                 typedef tvec4<bool> bool_type;
+00071 
+00072                 __m128 Data;
+00073 
+00075                 // Implicit basic constructors
+00076 
+00077                 fvec4SIMD();
+00078                 fvec4SIMD(__m128 const & Data);
+00079                 fvec4SIMD(fvec4SIMD const & v);
+00080 
+00082                 // Explicit basic constructors
+00083 
+00084                 explicit fvec4SIMD(
+00085                         ctor);
+00086                 explicit fvec4SIMD(
+00087                         float const & s);
+00088                 explicit fvec4SIMD(
+00089                         float const & x, 
+00090                         float const & y, 
+00091                         float const & z, 
+00092                         float const & w);
+00093                 explicit fvec4SIMD(
+00094                         tvec4<float> const & v);
+00095 
+00098 
+00099                 fvec4SIMD(vec2 const & v, float const & s1, float const & s2);
+00100                 fvec4SIMD(float const & s1, vec2 const & v, float const & s2);
+00101                 fvec4SIMD(float const & s1, float const & s2, vec2 const & v);
+00102                 fvec4SIMD(vec3 const & v, float const & s);
+00103                 fvec4SIMD(float const & s, vec3 const & v);
+00104                 fvec4SIMD(vec2 const & v1, vec2 const & v2);
+00105                 //fvec4SIMD(ivec4SIMD const & v);
+00106 
+00108                 // Unary arithmetic operators
+00109 
+00110                 fvec4SIMD& operator= (fvec4SIMD const & v);
+00111                 fvec4SIMD& operator+=(fvec4SIMD const & v);
+00112                 fvec4SIMD& operator-=(fvec4SIMD const & v);
+00113                 fvec4SIMD& operator*=(fvec4SIMD const & v);
+00114                 fvec4SIMD& operator/=(fvec4SIMD const & v);
+00115 
+00116                 fvec4SIMD& operator+=(float const & s);
+00117                 fvec4SIMD& operator-=(float const & s);
+00118                 fvec4SIMD& operator*=(float const & s);
+00119                 fvec4SIMD& operator/=(float const & s);
+00120 
+00121                 fvec4SIMD& operator++();
+00122                 fvec4SIMD& operator--();
+00123 
+00125                 // Swizzle operators
+00126 
+00127                 template <comp X, comp Y, comp Z, comp W>
+00128                 fvec4SIMD& swizzle();
+00129                 template <comp X, comp Y, comp Z, comp W>
+00130                 fvec4SIMD swizzle() const;
+00131                 template <comp X, comp Y, comp Z>
+00132                 fvec4SIMD swizzle() const;
+00133                 template <comp X, comp Y>
+00134                 fvec4SIMD swizzle() const;
+00135                 template <comp X>
+00136                 fvec4SIMD swizzle() const;
+00137         };
+00138 }//namespace detail
+00139 
+00140         typedef glm::detail::fvec4SIMD simdVec4;
+00141 
+00144 
+00147         detail::tvec4<float> vec4_cast(
+00148                 detail::fvec4SIMD const & x);
+00149 
+00152         detail::fvec4SIMD abs(detail::fvec4SIMD const & x);
+00153 
+00156         detail::fvec4SIMD sign(detail::fvec4SIMD const & x);
+00157 
+00160         detail::fvec4SIMD floor(detail::fvec4SIMD const & x);
+00161 
+00165         detail::fvec4SIMD trunc(detail::fvec4SIMD const & x);
+00166 
+00173         detail::fvec4SIMD round(detail::fvec4SIMD const & x);
+00174 
+00179         //detail::fvec4SIMD roundEven(detail::fvec4SIMD const & x);
+00180 
+00184         detail::fvec4SIMD ceil(detail::fvec4SIMD const & x);
+00185 
+00188         detail::fvec4SIMD fract(detail::fvec4SIMD const & x);
+00189 
+00193         detail::fvec4SIMD mod(
+00194                 detail::fvec4SIMD const & x, 
+00195                 detail::fvec4SIMD const & y);
+00196 
+00200         detail::fvec4SIMD mod(
+00201                 detail::fvec4SIMD const & x, 
+00202                 float const & y);
+00203 
+00209         //detail::fvec4SIMD modf(
+00210         //      detail::fvec4SIMD const & x, 
+00211         //      detail::fvec4SIMD & i);
+00212 
+00215         detail::fvec4SIMD min(
+00216                 detail::fvec4SIMD const & x, 
+00217                 detail::fvec4SIMD const & y);
+00218 
+00219         detail::fvec4SIMD min(
+00220                 detail::fvec4SIMD const & x, 
+00221                 float const & y);
+00222 
+00225         detail::fvec4SIMD max(
+00226                 detail::fvec4SIMD const & x, 
+00227                 detail::fvec4SIMD const & y);
+00228 
+00229         detail::fvec4SIMD max(
+00230                 detail::fvec4SIMD const & x, 
+00231                 float const & y);
+00232 
+00236         detail::fvec4SIMD clamp(
+00237                 detail::fvec4SIMD const & x, 
+00238                 detail::fvec4SIMD const & minVal, 
+00239                 detail::fvec4SIMD const & maxVal); 
+00240 
+00241         detail::fvec4SIMD clamp(
+00242                 detail::fvec4SIMD const & x, 
+00243                 float const & minVal, 
+00244                 float const & maxVal); 
+00245 
+00269         // \todo Test when 'a' is a boolean.
+00271         detail::fvec4SIMD mix(
+00272                 detail::fvec4SIMD const & x, 
+00273                 detail::fvec4SIMD const & y, 
+00274                 detail::fvec4SIMD const & a);
+00275 
+00278         detail::fvec4SIMD step(
+00279                 detail::fvec4SIMD const & edge, 
+00280                 detail::fvec4SIMD const & x);
+00281 
+00282         detail::fvec4SIMD step(
+00283                 float const & edge, 
+00284                 detail::fvec4SIMD const & x);
+00285 
+00296         detail::fvec4SIMD smoothstep(
+00297                 detail::fvec4SIMD const & edge0, 
+00298                 detail::fvec4SIMD const & edge1, 
+00299                 detail::fvec4SIMD const & x);
+00300 
+00301         detail::fvec4SIMD smoothstep(
+00302                 float const & edge0, 
+00303                 float const & edge1, 
+00304                 detail::fvec4SIMD const & x);
+00305 
+00312         //bvec4 isnan(detail::fvec4SIMD const & x);
+00313 
+00320         //bvec4 isinf(detail::fvec4SIMD const & x);
+00321 
+00326         //detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const & value);
+00327 
+00334         //detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const & value);
+00335 
+00338         detail::fvec4SIMD fma(
+00339                 detail::fvec4SIMD const & a, 
+00340                 detail::fvec4SIMD const & b, 
+00341                 detail::fvec4SIMD const & c);
+00342 
+00352         //detail::fvec4SIMD frexp(detail::fvec4SIMD const & x, detail::ivec4SIMD & exp);
+00353 
+00360         //detail::fvec4SIMD ldexp(detail::fvec4SIMD const & x, detail::ivec4SIMD const & exp);
+00361 
+00364         float length(
+00365                 detail::fvec4SIMD const & x);
+00366 
+00370         float fastLength(
+00371                 detail::fvec4SIMD const & x);
+00372 
+00376         float niceLength(
+00377                 detail::fvec4SIMD const & x);
+00378 
+00381         detail::fvec4SIMD length4(
+00382                 detail::fvec4SIMD const & x);
+00383 
+00387         detail::fvec4SIMD fastLength4(
+00388                 detail::fvec4SIMD const & x);
+00389 
+00393         detail::fvec4SIMD niceLength4(
+00394                 detail::fvec4SIMD const & x);
+00395 
+00398         float distance(
+00399                 detail::fvec4SIMD const & p0,
+00400                 detail::fvec4SIMD const & p1);
+00401 
+00404         detail::fvec4SIMD distance4(
+00405                 detail::fvec4SIMD const & p0,
+00406                 detail::fvec4SIMD const & p1);
+00407 
+00410         float simdDot(
+00411                 detail::fvec4SIMD const & x,
+00412                 detail::fvec4SIMD const & y);
+00413 
+00416         detail::fvec4SIMD dot4(
+00417                 detail::fvec4SIMD const & x,
+00418                 detail::fvec4SIMD const & y);
+00419 
+00422         detail::fvec4SIMD cross(
+00423                 detail::fvec4SIMD const & x,
+00424                 detail::fvec4SIMD const & y);
+00425 
+00428         detail::fvec4SIMD normalize(
+00429                 detail::fvec4SIMD const & x);
+00430 
+00434         detail::fvec4SIMD fastNormalize(
+00435                 detail::fvec4SIMD const & x);
+00436 
+00439         detail::fvec4SIMD simdFaceforward(
+00440                 detail::fvec4SIMD const & N,
+00441                 detail::fvec4SIMD const & I,
+00442                 detail::fvec4SIMD const & Nref);
+00443 
+00447         detail::fvec4SIMD reflect(
+00448                 detail::fvec4SIMD const & I,
+00449                 detail::fvec4SIMD const & N);
+00450 
+00455         detail::fvec4SIMD refract(
+00456                 detail::fvec4SIMD const & I,
+00457                 detail::fvec4SIMD const & N,
+00458                 float const & eta);
+00459 
+00462         detail::fvec4SIMD sqrt(
+00463                 detail::fvec4SIMD const & x);
+00464 
+00468         detail::fvec4SIMD niceSqrt(
+00469                 detail::fvec4SIMD const & x);
+00470 
+00474         detail::fvec4SIMD fastSqrt(
+00475                 detail::fvec4SIMD const & x);
+00476 
+00479         detail::fvec4SIMD inversesqrt(
+00480                 detail::fvec4SIMD const & x);
+00481 
+00485         detail::fvec4SIMD fastInversesqrt(
+00486                 detail::fvec4SIMD const & x);
+00487 
+00489 }//namespace glm
+00490 
+00491 #include "simd_vec4.inl"
+00492 
+00493 #endif//(GLM_ARCH != GLM_ARCH_PURE)
+00494 
+00495 #endif//GLM_GTX_simd_vec4
+
+
+ + + diff --git a/doc/api-0.9.3/a00101.html b/doc/api-0.9.3/a00101.html new file mode 100644 index 00000000..102a4769 --- /dev/null +++ b/doc/api-0.9.3/a00101.html @@ -0,0 +1,74 @@ + + + + +spline.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

spline.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename genType >
genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
template<typename genType >
genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
template<typename genType >
genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_spline: Spline

+
Date:
2007-01-25 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file spline.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00101_source.html b/doc/api-0.9.3/a00101_source.html new file mode 100644 index 00000000..9f72eb20 --- /dev/null +++ b/doc/api-0.9.3/a00101_source.html @@ -0,0 +1,127 @@ + + + + +spline.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

spline.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_spline
+00039 #define GLM_GTX_spline GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 #include "../gtx/optimum_pow.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_spline extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056         template <typename genType> 
+00057         genType catmullRom(
+00058                 genType const & v1, 
+00059                 genType const & v2, 
+00060                 genType const & v3, 
+00061                 genType const & v4, 
+00062                 typename genType::value_type const & s);
+00063                 
+00066     template <typename genType> 
+00067         genType hermite(
+00068                 genType const & v1, 
+00069                 genType const & t1, 
+00070                 genType const & v2, 
+00071                 genType const & t2, 
+00072                 typename genType::value_type const & s);
+00073                 
+00076         template <typename genType> 
+00077         genType cubic(
+00078                 genType const & v1, 
+00079                 genType const & v2, 
+00080                 genType const & v3, 
+00081                 genType const & v4, 
+00082                 typename genType::value_type const & s);
+00083 
+00085 }//namespace glm
+00086 
+00087 #include "spline.inl"
+00088 
+00089 #endif//GLM_GTX_spline
+00090 
+
+
+ + + diff --git a/doc/api-0.9.3/a00102.html b/doc/api-0.9.3/a00102.html new file mode 100644 index 00000000..b6a2fee3 --- /dev/null +++ b/doc/api-0.9.3/a00102.html @@ -0,0 +1,82 @@ + + + + +std_based_type.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

std_based_type.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef detail::tvec2
+< std::size_t > 
size2
typedef detail::tvec2
+< std::size_t > 
size2_t
typedef detail::tvec3
+< std::size_t > 
size3
typedef detail::tvec3
+< std::size_t > 
size3_t
typedef detail::tvec4
+< std::size_t > 
size4
typedef detail::tvec4
+< std::size_t > 
size4_t
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_std_based_type: Add types based on STL

+
Date:
2008-06-08 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_extented_min_max: Extended min max (dependence)
+ +

Definition in file std_based_type.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00102_source.html b/doc/api-0.9.3/a00102_source.html new file mode 100644 index 00000000..95fbad60 --- /dev/null +++ b/doc/api-0.9.3/a00102_source.html @@ -0,0 +1,114 @@ + + + + +std_based_type.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

std_based_type.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_std_based_type
+00039 #define GLM_GTX_std_based_type GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 #include <cstdlib>
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_std_based_type extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053         
+00056         typedef detail::tvec2<std::size_t>              size2;
+00057         
+00060         typedef detail::tvec3<std::size_t>              size3;
+00061 
+00064         typedef detail::tvec4<std::size_t>              size4;
+00065 
+00068         typedef detail::tvec2<std::size_t>              size2_t;
+00069         
+00072         typedef detail::tvec3<std::size_t>              size3_t;
+00073         
+00076         typedef detail::tvec4<std::size_t>              size4_t;
+00077 
+00079 }//namespace glm
+00080 
+00081 #include "std_based_type.inl"
+00082 
+00083 #endif//GLM_GTX_std_based_type
+
+
+ + + diff --git a/doc/api-0.9.3/a00103.html b/doc/api-0.9.3/a00103.html new file mode 100644 index 00000000..ab90a893 --- /dev/null +++ b/doc/api-0.9.3/a00103.html @@ -0,0 +1,76 @@ + + + + +string_cast.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

string_cast.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

template<typename genType >
std::string to_string (genType const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_string_cast: String cast

+
Date:
2008-04-26 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+
+GLM_GTX_integer: Extended integer functions (dependence)
+
+GLM_GTX_quaternion: Extented quaternion types and functions (dependence)
+ +

Definition in file string_cast.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00103_source.html b/doc/api-0.9.3/a00103_source.html new file mode 100644 index 00000000..85ab54ea --- /dev/null +++ b/doc/api-0.9.3/a00103_source.html @@ -0,0 +1,111 @@ + + + + +string_cast.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

string_cast.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 #ifndef GLM_GTX_string_cast
+00042 #define GLM_GTX_string_cast GLM_VERSION
+00043 
+00044 // Dependency:
+00045 #include "../glm.hpp"
+00046 #include "../gtc/half_float.hpp"
+00047 #include "../gtx/integer.hpp"
+00048 #include "../gtx/quaternion.hpp"
+00049 #include <string>
+00050 
+00051 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00052 #       pragma message("GLM: GLM_GTX_string_cast extension included")
+00053 #endif
+00054 
+00055 namespace glm
+00056 {
+00059 
+00062         template <typename genType> 
+00063         std::string to_string(genType const & x);
+00064 
+00066 }//namespace glm
+00067 
+00068 #include "string_cast.inl"
+00069 
+00070 #endif//GLM_GTX_string_cast
+
+
+ + + diff --git a/doc/api-0.9.3/a00104.html b/doc/api-0.9.3/a00104.html new file mode 100644 index 00000000..794dc326 --- /dev/null +++ b/doc/api-0.9.3/a00104.html @@ -0,0 +1,64 @@ + + + + +swizzle.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

swizzle.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_swizzle: Swizzle 'operator' implementation

+
Date:
2010-02-20 / 2011-06-05
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file swizzle.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00104_source.html b/doc/api-0.9.3/a00104_source.html new file mode 100644 index 00000000..abebc930 --- /dev/null +++ b/doc/api-0.9.3/a00104_source.html @@ -0,0 +1,418 @@ + + + + +swizzle.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

swizzle.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTC_swizzle
+00039 #define GLM_GTC_swizzle GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 #include "../gtc/type_precision.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTC_swizzle extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053         
+00054         template <typename T, template <typename> class vecType>
+00055         T const & swizzle(      
+00056                 vecType<T> const & v,
+00057                 comp x);
+00058 
+00059         template <typename T, template <typename> class vecType>
+00060         detail::tvec2<T> const & swizzle(
+00061                 vecType<T> const & v,
+00062                 comp x, comp y);
+00063 
+00064         template <typename T, template <typename> class vecType>
+00065         detail::tvec3<T> const & swizzle(
+00066                 vecType<T> const & v,
+00067                 comp x, comp y, comp z);
+00068 
+00069         template <typename T, template <typename> class vecType>
+00070         detail::tvec4<T> const & swizzle(
+00071                 vecType<T> const & v,
+00072                 comp x, comp y, comp z, comp w);
+00073 
+00074         template <typename T, template <typename> class vecType>
+00075         T & swizzle(
+00076                 vecType<T> & v,
+00077                 comp x);
+00078 
+00079         template <typename T, template <typename> class vecType>
+00080         detail::tref2<T> swizzle(
+00081                 vecType<T> & v,
+00082                 comp x, comp y);
+00083 
+00084         template <typename T, template <typename> class vecType>
+00085         detail::tref3<T> swizzle(
+00086                 vecType<T> & v,
+00087                 comp x, comp y, comp z);
+00088 
+00089         template <typename T, template <typename> class vecType>
+00090         detail::tref4<T> swizzle(
+00091                 vecType<T> & v,
+00092                 comp x, comp y, comp z, comp w);
+00093 
+00094 #       define static_swizzle1_const(TYPE, SIZE)                                                        \
+00095                 template <comp x>                                                                               \
+00096                 GLM_FUNC_QUALIFIER TYPE swizzle(detail::tvec##SIZE<TYPE> const & v)     \
+00097                 {return v[x];}                                                                                  
+00098                                                                                                                                 
+00099 #       define static_swizzle1_ref(TYPE, SIZE)                                                                  \
+00100                 template <comp x>                                                                                                       \
+00101                 GLM_FUNC_QUALIFIER TYPE& swizzle(detail::tvec##SIZE<TYPE> & v)          \
+00102                 {return v[x];}
+00103 
+00104         static_swizzle1_ref(detail::float16, 2)
+00105         static_swizzle1_ref(detail::float16, 3)
+00106         static_swizzle1_ref(detail::float16, 4)
+00107         static_swizzle1_ref(detail::float32, 2)
+00108         static_swizzle1_ref(detail::float32, 3)
+00109         static_swizzle1_ref(detail::float32, 4)
+00110         static_swizzle1_ref(detail::float64, 2)
+00111         static_swizzle1_ref(detail::float64, 3)
+00112         static_swizzle1_ref(detail::float64, 4)
+00113 
+00114         static_swizzle1_ref(detail::int8,  2)
+00115         static_swizzle1_ref(detail::int8,  3)
+00116         static_swizzle1_ref(detail::int8,  4)
+00117         static_swizzle1_ref(detail::int16, 2)
+00118         static_swizzle1_ref(detail::int16, 3)
+00119         static_swizzle1_ref(detail::int16, 4)
+00120         static_swizzle1_ref(detail::int32, 2)
+00121         static_swizzle1_ref(detail::int32, 3)
+00122         static_swizzle1_ref(detail::int32, 4)
+00123         static_swizzle1_ref(detail::int64, 2)
+00124         static_swizzle1_ref(detail::int64, 3)
+00125         static_swizzle1_ref(detail::int64, 4)
+00126 
+00127         static_swizzle1_ref(detail::uint8,  2)
+00128         static_swizzle1_ref(detail::uint8,  3)
+00129         static_swizzle1_ref(detail::uint8,  4)
+00130         static_swizzle1_ref(detail::uint16, 2)
+00131         static_swizzle1_ref(detail::uint16, 3)
+00132         static_swizzle1_ref(detail::uint16, 4)
+00133         static_swizzle1_ref(detail::uint32, 2)
+00134         static_swizzle1_ref(detail::uint32, 3)
+00135         static_swizzle1_ref(detail::uint32, 4)
+00136         static_swizzle1_ref(detail::uint64, 2)
+00137         static_swizzle1_ref(detail::uint64, 3)
+00138         static_swizzle1_ref(detail::uint64, 4)
+00139 /*
+00140 #       define static_swizzle2_const(TYPE) \
+00141                 template <comp x, comp y> \
+00142                 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
+00143                 {return TYPE(v[x], v[y]);}
+00144 
+00145 #       define static_swizzle3_const(TYPE) \
+00146                 template <comp x, comp y, comp z> \
+00147                 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
+00148                 {return TYPE(v[x], v[y], v[z]);}
+00149 
+00150 #       define static_swizzle4_const(TYPE) \
+00151                 template <comp x, comp y, comp z, comp w> \
+00152                 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
+00153                 {return TYPE(v[x], v[y], v[z], v[w]);}
+00154 */
+00155 
+00156 #       define static_swizzle2_const(TYPE, SIZE)                                                                        \
+00157                 template <comp x, comp y>                                                                                               \
+00158                 GLM_FUNC_QUALIFIER detail::tvec2<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v)      \
+00159                 {return detail::tvec2<TYPE>(v[x], v[y]);}
+00160 
+00161 #       define static_swizzle3_const(TYPE, SIZE)                                                                        \
+00162                 template <comp x, comp y, comp z>                                                                               \
+00163                 GLM_FUNC_QUALIFIER detail::tvec3<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v)      \
+00164                 {return detail::tvec3<TYPE>(v[x], v[y], v[z]);}
+00165 
+00166 #       define static_swizzle4_const(TYPE, SIZE)                                                                        \
+00167                 template <comp x, comp y, comp z, comp w>                                                               \
+00168                 GLM_FUNC_QUALIFIER detail::tvec4<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v)      \
+00169                 {return detail::tvec4<TYPE>(v[x], v[y], v[z], v[w]);}
+00170 
+00171 
+00172         static_swizzle2_const(glm::f16, 2)
+00173         static_swizzle2_const(glm::f16, 3)
+00174         static_swizzle2_const(glm::f16, 4)
+00175         static_swizzle2_const(glm::f32, 2)
+00176         static_swizzle2_const(glm::f32, 3)
+00177         static_swizzle2_const(glm::f32, 4)
+00178         static_swizzle2_const(glm::f64, 2)
+00179         static_swizzle2_const(glm::f64, 3)
+00180         static_swizzle2_const(glm::f64, 4)
+00181 
+00182         static_swizzle2_const(glm::i8, 2)
+00183         static_swizzle2_const(glm::i8, 3)
+00184         static_swizzle2_const(glm::i8, 4)
+00185         static_swizzle2_const(glm::i16, 2)
+00186         static_swizzle2_const(glm::i16, 3)
+00187         static_swizzle2_const(glm::i16, 4)
+00188         static_swizzle2_const(glm::i32, 2)
+00189         static_swizzle2_const(glm::i32, 3)
+00190         static_swizzle2_const(glm::i32, 4)
+00191         static_swizzle2_const(glm::i64, 2)
+00192         static_swizzle2_const(glm::i64, 3)
+00193         static_swizzle2_const(glm::i64, 4)
+00194 
+00195         static_swizzle2_const(glm::u8, 2)
+00196         static_swizzle2_const(glm::u8, 3)
+00197         static_swizzle2_const(glm::u8, 4)
+00198         static_swizzle2_const(glm::u16, 2)
+00199         static_swizzle2_const(glm::u16, 3)
+00200         static_swizzle2_const(glm::u16, 4)
+00201         static_swizzle2_const(glm::u32, 2)
+00202         static_swizzle2_const(glm::u32, 3)
+00203         static_swizzle2_const(glm::u32, 4)
+00204         static_swizzle2_const(glm::u64, 2)
+00205         static_swizzle2_const(glm::u64, 3)
+00206         static_swizzle2_const(glm::u64, 4)
+00207 
+00208         static_swizzle3_const(glm::f16, 2)
+00209         static_swizzle3_const(glm::f16, 3)
+00210         static_swizzle3_const(glm::f16, 4)
+00211         static_swizzle3_const(glm::f32, 2)
+00212         static_swizzle3_const(glm::f32, 3)
+00213         static_swizzle3_const(glm::f32, 4)
+00214         static_swizzle3_const(glm::f64, 2)
+00215         static_swizzle3_const(glm::f64, 3)
+00216         static_swizzle3_const(glm::f64, 4)
+00217 
+00218         static_swizzle3_const(glm::i8, 2)
+00219         static_swizzle3_const(glm::i8, 3)
+00220         static_swizzle3_const(glm::i8, 4)
+00221         static_swizzle3_const(glm::i16, 2)
+00222         static_swizzle3_const(glm::i16, 3)
+00223         static_swizzle3_const(glm::i16, 4)
+00224         static_swizzle3_const(glm::i32, 2)
+00225         static_swizzle3_const(glm::i32, 3)
+00226         static_swizzle3_const(glm::i32, 4)
+00227         static_swizzle3_const(glm::i64, 2)
+00228         static_swizzle3_const(glm::i64, 3)
+00229         static_swizzle3_const(glm::i64, 4)
+00230 
+00231         static_swizzle3_const(glm::u8, 2)
+00232         static_swizzle3_const(glm::u8, 3)
+00233         static_swizzle3_const(glm::u8, 4)
+00234         static_swizzle3_const(glm::u16, 2)
+00235         static_swizzle3_const(glm::u16, 3)
+00236         static_swizzle3_const(glm::u16, 4)
+00237         static_swizzle3_const(glm::u32, 2)
+00238         static_swizzle3_const(glm::u32, 3)
+00239         static_swizzle3_const(glm::u32, 4)
+00240         static_swizzle3_const(glm::u64, 2)
+00241         static_swizzle3_const(glm::u64, 3)
+00242         static_swizzle3_const(glm::u64, 4)
+00243 
+00244         static_swizzle4_const(glm::f16, 2)
+00245         static_swizzle4_const(glm::f16, 3)
+00246         static_swizzle4_const(glm::f16, 4)
+00247         static_swizzle4_const(glm::f32, 2)
+00248         static_swizzle4_const(glm::f32, 3)
+00249         static_swizzle4_const(glm::f32, 4)
+00250         static_swizzle4_const(glm::f64, 2)
+00251         static_swizzle4_const(glm::f64, 3)
+00252         static_swizzle4_const(glm::f64, 4)
+00253 
+00254         static_swizzle4_const(glm::i8, 2)
+00255         static_swizzle4_const(glm::i8, 3)
+00256         static_swizzle4_const(glm::i8, 4)
+00257         static_swizzle4_const(glm::i16, 2)
+00258         static_swizzle4_const(glm::i16, 3)
+00259         static_swizzle4_const(glm::i16, 4)
+00260         static_swizzle4_const(glm::i32, 2)
+00261         static_swizzle4_const(glm::i32, 3)
+00262         static_swizzle4_const(glm::i32, 4)
+00263         static_swizzle4_const(glm::i64, 2)
+00264         static_swizzle4_const(glm::i64, 3)
+00265         static_swizzle4_const(glm::i64, 4)
+00266 
+00267         static_swizzle4_const(glm::u8, 2)
+00268         static_swizzle4_const(glm::u8, 3)
+00269         static_swizzle4_const(glm::u8, 4)
+00270         static_swizzle4_const(glm::u16, 2)
+00271         static_swizzle4_const(glm::u16, 3)
+00272         static_swizzle4_const(glm::u16, 4)
+00273         static_swizzle4_const(glm::u32, 2)
+00274         static_swizzle4_const(glm::u32, 3)
+00275         static_swizzle4_const(glm::u32, 4)
+00276         static_swizzle4_const(glm::u64, 2)
+00277         static_swizzle4_const(glm::u64, 3)
+00278         static_swizzle4_const(glm::u64, 4)
+00279 
+00280 #       define static_swizzle2_ref(TYPE, SIZE) \
+00281                 template <glm::comp x, glm::comp y> \
+00282                 GLM_FUNC_QUALIFIER glm::detail::tref2<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \
+00283                 {return glm::detail::tref2<TYPE>(v[x], v[y]);}  
+00284 
+00285 #       define static_swizzle3_ref(TYPE, SIZE) \
+00286                 template <glm::comp x, glm::comp y, glm::comp z> \
+00287                 GLM_FUNC_QUALIFIER glm::detail::tref3<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \
+00288                 {return glm::detail::tref3<TYPE>(v[x], v[y], v[z]);}    
+00289 
+00290 #       define static_swizzle4_ref(TYPE, SIZE) \
+00291                 template <glm::comp x, glm::comp y, glm::comp z, glm::comp w> \
+00292                 GLM_FUNC_QUALIFIER glm::detail::tref4<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \
+00293                 {return glm::detail::tref4<TYPE>(v[x], v[y], v[z], v[w]);}      
+00294 
+00295         static_swizzle2_ref(glm::f16, 2)
+00296         static_swizzle2_ref(glm::f16, 3)
+00297         static_swizzle2_ref(glm::f16, 4)
+00298         static_swizzle2_ref(glm::f32, 2)
+00299         static_swizzle2_ref(glm::f32, 3)
+00300         static_swizzle2_ref(glm::f32, 4)
+00301         static_swizzle2_ref(glm::f64, 2)
+00302         static_swizzle2_ref(glm::f64, 3)
+00303         static_swizzle2_ref(glm::f64, 4)
+00304 
+00305         static_swizzle2_ref(glm::i8, 2)
+00306         static_swizzle2_ref(glm::i8, 3)
+00307         static_swizzle2_ref(glm::i8, 4)
+00308         static_swizzle2_ref(glm::i16, 2)
+00309         static_swizzle2_ref(glm::i16, 3)
+00310         static_swizzle2_ref(glm::i16, 4)
+00311         static_swizzle2_ref(glm::i32, 2)
+00312         static_swizzle2_ref(glm::i32, 3)
+00313         static_swizzle2_ref(glm::i32, 4)
+00314         static_swizzle2_ref(glm::i64, 2)
+00315         static_swizzle2_ref(glm::i64, 3)
+00316         static_swizzle2_ref(glm::i64, 4)
+00317 
+00318         static_swizzle2_ref(glm::u8, 2)
+00319         static_swizzle2_ref(glm::u8, 3)
+00320         static_swizzle2_ref(glm::u8, 4)
+00321         static_swizzle2_ref(glm::u16, 2)
+00322         static_swizzle2_ref(glm::u16, 3)
+00323         static_swizzle2_ref(glm::u16, 4)
+00324         static_swizzle2_ref(glm::u32, 2)
+00325         static_swizzle2_ref(glm::u32, 3)
+00326         static_swizzle2_ref(glm::u32, 4)
+00327         static_swizzle2_ref(glm::u64, 2)
+00328         static_swizzle2_ref(glm::u64, 3)
+00329         static_swizzle2_ref(glm::u64, 4)
+00330 
+00331         static_swizzle3_ref(glm::f16, 3)
+00332         static_swizzle3_ref(glm::f16, 4)
+00333         static_swizzle3_ref(glm::f32, 3)
+00334         static_swizzle3_ref(glm::f32, 4)
+00335         static_swizzle3_ref(glm::f64, 3)
+00336         static_swizzle3_ref(glm::f64, 4)
+00337 
+00338         static_swizzle3_ref(glm::i8, 3)
+00339         static_swizzle3_ref(glm::i8, 4)
+00340         static_swizzle3_ref(glm::i16, 3)
+00341         static_swizzle3_ref(glm::i16, 4)
+00342         static_swizzle3_ref(glm::i32, 3)
+00343         static_swizzle3_ref(glm::i32, 4)
+00344         static_swizzle3_ref(glm::i64, 3)
+00345         static_swizzle3_ref(glm::i64, 4)
+00346 
+00347         static_swizzle3_ref(glm::u8, 3)
+00348         static_swizzle3_ref(glm::u8, 4)
+00349         static_swizzle3_ref(glm::u16, 3)
+00350         static_swizzle3_ref(glm::u16, 4)
+00351         static_swizzle3_ref(glm::u32, 3)
+00352         static_swizzle3_ref(glm::u32, 4)
+00353         static_swizzle3_ref(glm::u64, 3)
+00354         static_swizzle3_ref(glm::u64, 4)
+00355 
+00356         static_swizzle4_ref(glm::f16, 4)
+00357         static_swizzle4_ref(glm::f32, 4)
+00358         static_swizzle4_ref(glm::f64, 4)
+00359 
+00360         static_swizzle4_ref(glm::i8, 4)
+00361         static_swizzle4_ref(glm::i16, 4)
+00362         static_swizzle4_ref(glm::i32, 4)
+00363         static_swizzle4_ref(glm::i64, 4)
+00364 
+00365         static_swizzle4_ref(glm::u8, 4)
+00366         static_swizzle4_ref(glm::u16, 4)
+00367         static_swizzle4_ref(glm::u32, 4)
+00368         static_swizzle4_ref(glm::u64, 4)
+00369 
+00371 }//namespace glm
+00372 
+00373 #include "swizzle.inl"
+00374 
+00375 #endif//GLM_GTC_swizzle
+
+
+ + + diff --git a/doc/api-0.9.3/a00105.html b/doc/api-0.9.3/a00105.html new file mode 100644 index 00000000..e11c4024 --- /dev/null +++ b/doc/api-0.9.3/a00105.html @@ -0,0 +1,92 @@ + + + + +transform.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

transform.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
detail::tmat4x4< T > rotate (T angle, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > rotate (T angle, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > scale (detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > scale (T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (detail::tvec3< T > const &v)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_transform: Extented transformation matrices

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_matrix_transform: Matrix transform functions (dependence)
+
+GLM_GTX_transform: Extented transformation matrices
+
+GLM_GTX_transform2: Extra transformation matrices
+ +

Definition in file transform.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00105_source.html b/doc/api-0.9.3/a00105_source.html new file mode 100644 index 00000000..efab1857 --- /dev/null +++ b/doc/api-0.9.3/a00105_source.html @@ -0,0 +1,156 @@ + + + + +transform.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

transform.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 #ifndef GLM_GTX_transform 
+00042 #define GLM_GTX_transform GLM_VERSION
+00043 
+00044 // Dependency:
+00045 #include "../glm.hpp"
+00046 #include "../gtc/matrix_transform.hpp"
+00047 
+00048 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00049 #       pragma message("GLM: GLM_GTX_transform extension included")
+00050 #endif
+00051 
+00052 namespace glm
+00053 {
+00056 
+00059         // - See also: \link glm::translate GLM_GTC_matrix_transform \endlink
+00060         template <typename T> 
+00061         detail::tmat4x4<T> translate(
+00062                 T x, T y, T z);
+00063                 
+00066         // - See also: \link glm::translate GLM_GTC_matrix_transform \endlink
+00067         template <typename T> 
+00068         detail::tmat4x4<T> translate(
+00069                 detail::tmat4x4<T> const & m, 
+00070                 T x, T y, T z);
+00071                 
+00074         // - See also: \link glm::translate GLM_GTC_matrix_transform \endlink
+00075         template <typename T> 
+00076         detail::tmat4x4<T> translate(
+00077                 detail::tvec3<T> const & v);
+00078 
+00081         // - See also: \link glm::rotate GLM_GTC_matrix_transform \endlink
+00082         template <typename T> 
+00083         detail::tmat4x4<T> rotate(
+00084                 T angle, 
+00085                 T x, T y, T z);
+00086 
+00089         // - See also: \link glm::rotate GLM_GTC_matrix_transform \endlink
+00090         template <typename T> 
+00091         detail::tmat4x4<T> rotate(
+00092                 T angle, 
+00093                 detail::tvec3<T> const & v);
+00094 
+00097         // - See also: \link glm::rotate GLM_GTC_matrix_transform \endlink
+00098         template <typename T> 
+00099         detail::tmat4x4<T> rotate(
+00100                 detail::tmat4x4<T> const & m, 
+00101                 T angle, 
+00102                 T x, T y, T z);
+00103                 
+00106         // - See also: \link glm::scale GLM_GTC_matrix_transform \endlink
+00107         template <typename T> 
+00108         detail::tmat4x4<T> scale(
+00109                 T x, T y, T z);
+00110                 
+00113         // - See also: \link glm::scale GLM_GTC_matrix_transform \endlink
+00114         template <typename T> 
+00115         detail::tmat4x4<T> scale(
+00116                 detail::tmat4x4<T> const & m, 
+00117                 T x, T y, T z);
+00118 
+00121         // - See also: \link glm::scale GLM_GTC_matrix_transform \endlink
+00122         template <typename T> 
+00123         detail::tmat4x4<T> scale(
+00124                 detail::tvec3<T> const & v);
+00125 
+00127 }// namespace glm
+00128 
+00129 #include "transform.inl"
+00130 
+00131 #endif//GLM_GTX_transform
+
+
+ + + diff --git a/doc/api-0.9.3/a00106.html b/doc/api-0.9.3/a00106.html new file mode 100644 index 00000000..b73379fd --- /dev/null +++ b/doc/api-0.9.3/a00106.html @@ -0,0 +1,88 @@ + + + + +transform2.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

transform2.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
detail::tmat3x3< T > proj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal)
template<typename T >
detail::tmat4x4< T > proj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal)
template<typename valType >
detail::tmat4x4< valType > scaleBias (valType scale, valType bias)
template<typename valType >
detail::tmat4x4< valType > scaleBias (detail::tmat4x4< valType > const &m, valType scale, valType bias)
template<typename T >
detail::tmat3x3< T > shearX2D (detail::tmat3x3< T > const &m, T y)
template<typename T >
detail::tmat4x4< T > shearX3D (const detail::tmat4x4< T > &m, T y, T z)
template<typename T >
detail::tmat3x3< T > shearY2D (detail::tmat3x3< T > const &m, T x)
template<typename T >
detail::tmat4x4< T > shearY3D (const detail::tmat4x4< T > &m, T x, T z)
template<typename T >
detail::tmat4x4< T > shearZ3D (const detail::tmat4x4< T > &m, T x, T y)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_transform2: Extra transformation matrices

+
Date:
2005-12-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_transform: Extented transformation matrices (dependence)
+ +

Definition in file transform2.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00106_source.html b/doc/api-0.9.3/a00106_source.html new file mode 100644 index 00000000..88823f46 --- /dev/null +++ b/doc/api-0.9.3/a00106_source.html @@ -0,0 +1,160 @@ + + + + +transform2.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

transform2.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_transform2
+00040 #define GLM_GTX_transform2 GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 #include "../gtx/transform.hpp"
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_transform2 extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename T> 
+00058         detail::tmat3x3<T> shearX2D(
+00059                 detail::tmat3x3<T> const & m, 
+00060                 T y);
+00061 
+00064         template <typename T> 
+00065         detail::tmat3x3<T> shearY2D(
+00066                 detail::tmat3x3<T> const & m, 
+00067                 T x);
+00068 
+00071         template <typename T> 
+00072         detail::tmat4x4<T> shearX3D(
+00073                 const detail::tmat4x4<T> & m,
+00074                 T y, 
+00075                 T z);
+00076                 
+00079         template <typename T> 
+00080         detail::tmat4x4<T> shearY3D(
+00081                 const detail::tmat4x4<T> & m, 
+00082                 T x, 
+00083                 T z);
+00084                 
+00087         template <typename T> 
+00088         detail::tmat4x4<T> shearZ3D(
+00089                 const detail::tmat4x4<T> & m, 
+00090                 T x, 
+00091                 T y);
+00092 
+00093         //template <typename T> GLM_FUNC_QUALIFIER detail::tmat4x4<T> shear(const detail::tmat4x4<T> & m, shearPlane, planePoint, angle)
+00094         // Identity + tan(angle) * cross(Normal, OnPlaneVector)     0
+00095         // - dot(PointOnPlane, normal) * OnPlaneVector              1
+00096 
+00097         // Reflect functions seem to don't work
+00098         //template <typename T> detail::tmat3x3<T> reflect2D(const detail::tmat3x3<T> & m, const detail::tvec3<T>& normal){return reflect2DGTX(m, normal);}                                                                     //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
+00099         //template <typename T> detail::tmat4x4<T> reflect3D(const detail::tmat4x4<T> & m, const detail::tvec3<T>& normal){return reflect3DGTX(m, normal);}                                                                     //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
+00100                 
+00103         template <typename T> 
+00104         detail::tmat3x3<T> proj2D(
+00105                 const detail::tmat3x3<T> & m, 
+00106                 const detail::tvec3<T>& normal);
+00107                                 
+00110         template <typename T> 
+00111         detail::tmat4x4<T> proj3D(
+00112                 const detail::tmat4x4<T> & m, 
+00113                 const detail::tvec3<T>& normal);
+00114 
+00117         template <typename valType> 
+00118         detail::tmat4x4<valType> scaleBias(
+00119                 valType scale, 
+00120                 valType bias);
+00121 
+00124         template <typename valType> 
+00125         detail::tmat4x4<valType> scaleBias(
+00126                 detail::tmat4x4<valType> const & m, 
+00127                 valType scale, 
+00128                 valType bias);
+00129 
+00131 }// namespace glm
+00132 
+00133 #include "transform2.inl"
+00134 
+00135 #endif//GLM_GTX_transform2
+
+
+ + + diff --git a/doc/api-0.9.3/a00107.html b/doc/api-0.9.3/a00107.html new file mode 100644 index 00000000..6933b735 --- /dev/null +++ b/doc/api-0.9.3/a00107.html @@ -0,0 +1,105 @@ + + + + +type.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef detail::tvec2< bool > bvec2
typedef detail::tvec3< bool > bvec3
typedef detail::tvec4< bool > bvec4
typedef detail::tmat2x2< double > dmat2
typedef detail::tmat2x2< double > dmat2x2
typedef detail::tmat2x3< double > dmat2x3
typedef detail::tmat2x4< double > dmat2x4
typedef detail::tmat3x3< double > dmat3
typedef detail::tmat3x2< double > dmat3x2
typedef detail::tmat3x3< double > dmat3x3
typedef detail::tmat3x4< double > dmat3x4
typedef detail::tmat4x4< double > dmat4
typedef detail::tmat4x2< double > dmat4x2
typedef detail::tmat4x3< double > dmat4x3
typedef detail::tmat4x4< double > dmat4x4
typedef detail::tvec2< double > dvec2
typedef detail::tvec3< double > dvec3
typedef detail::tvec4< double > dvec4
typedef mediump_ivec2 ivec2
typedef mediump_ivec3 ivec3
typedef mediump_ivec4 ivec4
typedef mat2x2 mat2
typedef mediump_mat2x2 mat2x2
typedef mediump_mat2x3 mat2x3
typedef mediump_mat2x4 mat2x4
typedef mat3x3 mat3
typedef mediump_mat3x2 mat3x2
typedef mediump_mat3x3 mat3x3
typedef mediump_mat3x4 mat3x4
typedef mat4x4 mat4
typedef mediump_mat4x2 mat4x2
typedef mediump_mat4x3 mat4x3
typedef mediump_mat4x4 mat4x4
typedef mediump_uvec2 uvec2
typedef mediump_uvec3 uvec3
typedef mediump_uvec4 uvec4
typedef mediump_vec3 vec3
typedef mediump_vec4 vec4
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-01-08 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00107_source.html b/doc/api-0.9.3/a00107_source.html new file mode 100644 index 00000000..8c48f321 --- /dev/null +++ b/doc/api-0.9.3/a00107_source.html @@ -0,0 +1,270 @@ + + + + +type.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type
+00030 #define glm_core_type
+00031 
+00032 #include "type_half.hpp"
+00033 #include "type_float.hpp"
+00034 #include "type_int.hpp"
+00035 
+00036 #include "type_gentype.hpp"
+00037 
+00038 #include "type_vec1.hpp"
+00039 #include "type_vec2.hpp"
+00040 #include "type_vec3.hpp"
+00041 #include "type_vec4.hpp"
+00042 
+00043 #include "type_mat2x2.hpp"
+00044 #include "type_mat2x3.hpp"
+00045 #include "type_mat2x4.hpp"
+00046 #include "type_mat3x2.hpp"
+00047 #include "type_mat3x3.hpp"
+00048 #include "type_mat3x4.hpp"
+00049 #include "type_mat4x2.hpp"
+00050 #include "type_mat4x3.hpp"
+00051 #include "type_mat4x4.hpp"
+00052 
+00053 namespace glm
+00054 {
+00056         // Float definition
+00057 
+00058 #if(defined(GLM_PRECISION_HIGHP_FLOAT))
+00059         typedef highp_vec2          vec2;
+00060         typedef highp_vec3          vec3;
+00061         typedef highp_vec4          vec4;
+00062         typedef highp_mat2x2            mat2x2;
+00063         typedef highp_mat2x3            mat2x3;
+00064         typedef highp_mat2x4            mat2x4;
+00065         typedef highp_mat3x2            mat3x2;
+00066         typedef highp_mat3x3            mat3x3;
+00067         typedef highp_mat3x4            mat3x4;
+00068         typedef highp_mat4x2            mat4x2;
+00069         typedef highp_mat4x3            mat4x3;
+00070         typedef highp_mat4x4            mat4x4;
+00071 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+00072         typedef mediump_vec2            vec2;
+00073         typedef mediump_vec3            vec3;
+00074         typedef mediump_vec4            vec4;
+00075         typedef mediump_mat2x2      mat2x2;
+00076         typedef mediump_mat2x3      mat2x3;
+00077         typedef mediump_mat2x4      mat2x4;
+00078         typedef mediump_mat3x2      mat3x2;
+00079         typedef mediump_mat3x3      mat3x3;
+00080         typedef mediump_mat3x4      mat3x4;
+00081         typedef mediump_mat4x2      mat4x2;
+00082         typedef mediump_mat4x3      mat4x3;
+00083         typedef mediump_mat4x4      mat4x4;
+00084 #elif(defined(GLM_PRECISION_LOWP_FLOAT))
+00085         typedef lowp_vec2                       vec2;
+00086         typedef lowp_vec3                       vec3;
+00087         typedef lowp_vec4                       vec4;
+00088         typedef lowp_mat2x2                     mat2x2;
+00089         typedef lowp_mat2x3                     mat2x3;
+00090         typedef lowp_mat2x4                     mat2x4;
+00091         typedef lowp_mat3x2                     mat3x2;
+00092         typedef lowp_mat3x3                     mat3x3;
+00093         typedef lowp_mat3x4                     mat3x4;
+00094         typedef lowp_mat4x2                     mat4x2;
+00095         typedef lowp_mat4x3                     mat4x3;
+00096         typedef lowp_mat4x4                     mat4x4;
+00097 #else
+00098 
+00099 
+00100 
+00101         typedef mediump_vec2            vec2;
+00102 
+00106         typedef mediump_vec3            vec3;
+00107 
+00111         typedef mediump_vec4            vec4;
+00112 
+00116         typedef mediump_mat2x2          mat2x2;
+00117 
+00121         typedef mediump_mat2x3          mat2x3;
+00122 
+00126         typedef mediump_mat2x4          mat2x4;
+00127 
+00131         typedef mediump_mat3x2          mat3x2;
+00132 
+00136         typedef mediump_mat3x3          mat3x3;
+00137 
+00141         typedef mediump_mat3x4          mat3x4;
+00142 
+00146         typedef mediump_mat4x2          mat4x2;
+00147 
+00151         typedef mediump_mat4x3          mat4x3;
+00152 
+00156         typedef mediump_mat4x4          mat4x4;
+00157 
+00158 #endif//GLM_PRECISION
+00159 
+00163         typedef mat2x2                                                  mat2;
+00164 
+00168         typedef mat3x3                                                  mat3;
+00169 
+00173         typedef mat4x4                                                  mat4;
+00174 
+00176         // Signed integer definition
+00177 
+00178 #if(defined(GLM_PRECISION_HIGHP_INT))
+00179         typedef highp_ivec2                     ivec2;
+00180         typedef highp_ivec3                     ivec3;
+00181         typedef highp_ivec4                     ivec4;
+00182 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+00183         typedef mediump_ivec2           ivec2;
+00184         typedef mediump_ivec3           ivec3;
+00185         typedef mediump_ivec4           ivec4;
+00186 #elif(defined(GLM_PRECISION_LOWP_INT))
+00187         typedef lowp_ivec2                      ivec2;
+00188         typedef lowp_ivec3                      ivec3;
+00189         typedef lowp_ivec4                      ivec4;
+00190 #else
+00191 
+00192 
+00193 
+00194         typedef mediump_ivec2           ivec2;
+00195 
+00199         typedef mediump_ivec3           ivec3;
+00200 
+00204         typedef mediump_ivec4           ivec4;
+00205 #endif//GLM_PRECISION
+00206 
+00208         // Unsigned integer definition
+00209 
+00210 #if(defined(GLM_PRECISION_HIGHP_UINT))
+00211         typedef highp_uvec2                     uvec2;
+00212         typedef highp_uvec3                     uvec3;
+00213         typedef highp_uvec4                     uvec4;
+00214 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
+00215         typedef mediump_uvec2           uvec2;
+00216         typedef mediump_uvec3           uvec3;
+00217         typedef mediump_uvec4           uvec4;
+00218 #elif(defined(GLM_PRECISION_LOWP_UINT))
+00219         typedef lowp_uvec2                      uvec2;
+00220         typedef lowp_uvec3                      uvec3;
+00221         typedef lowp_uvec4                      uvec4;
+00222 #else
+00223 
+00224 
+00225 
+00226         typedef mediump_uvec2           uvec2;
+00227 
+00231         typedef mediump_uvec3           uvec3;
+00232 
+00236         typedef mediump_uvec4           uvec4;
+00237 #endif//GLM_PRECISION
+00238 
+00240         // Boolean definition
+00241 
+00245         typedef detail::tvec2<bool>             bvec2;
+00246 
+00250         typedef detail::tvec3<bool>             bvec3;
+00251 
+00255         typedef detail::tvec4<bool>             bvec4;
+00256 
+00258         // Double definition
+00259 
+00263         typedef detail::tvec2<double>   dvec2;
+00264 
+00268         typedef detail::tvec3<double>   dvec3;
+00269 
+00273         typedef detail::tvec4<double>   dvec4;
+00274 
+00278         typedef detail::tmat2x2<double> dmat2;
+00279 
+00283         typedef detail::tmat3x3<double> dmat3;
+00284 
+00288         typedef detail::tmat4x4<double> dmat4;
+00289 
+00293         typedef detail::tmat2x2<double> dmat2x2;
+00294 
+00298         typedef detail::tmat2x3<double> dmat2x3;
+00299 
+00303         typedef detail::tmat2x4<double> dmat2x4;
+00304 
+00308         typedef detail::tmat3x2<double> dmat3x2;
+00309 
+00313         typedef detail::tmat3x3<double> dmat3x3;
+00314 
+00318         typedef detail::tmat3x4<double> dmat3x4;
+00319 
+00323         typedef detail::tmat4x2<double> dmat4x2;
+00324 
+00328         typedef detail::tmat4x3<double> dmat4x3;
+00329 
+00333         typedef detail::tmat4x4<double> dmat4x4;
+00334 
+00335 }//namespace glm
+00336 
+00337 #endif//glm_core_type
+
+
+ + + diff --git a/doc/api-0.9.3/a00108.html b/doc/api-0.9.3/a00108.html new file mode 100644 index 00000000..5e1689ba --- /dev/null +++ b/doc/api-0.9.3/a00108.html @@ -0,0 +1,70 @@ + + + + +type_float.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_float.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef highp_float_t highp_float
typedef lowp_float_t lowp_float
typedef mediump_float_t mediump_float
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-22 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_float.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00108_source.html b/doc/api-0.9.3/a00108_source.html new file mode 100644 index 00000000..a3b745c0 --- /dev/null +++ b/doc/api-0.9.3/a00108_source.html @@ -0,0 +1,120 @@ + + + + +type_float.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_float.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_float
+00030 #define glm_core_type_float
+00031 
+00032 #include "type_half.hpp"
+00033 #include "setup.hpp"
+00034 
+00035 namespace glm
+00036 {
+00037         namespace detail
+00038         {
+00039                 GLM_DETAIL_IS_FLOAT(detail::thalf);
+00040                 GLM_DETAIL_IS_FLOAT(float);
+00041                 GLM_DETAIL_IS_FLOAT(double);
+00042                 GLM_DETAIL_IS_FLOAT(long double);
+00043         }
+00044         //namespace detail
+00045 
+00046 #ifdef GLM_USE_HALF_SCALAR
+00047     typedef detail::thalf               lowp_float_t;
+00048 #else//GLM_USE_HALF_SCALAR
+00049     typedef float                               lowp_float_t;
+00050 #endif//GLM_USE_HALF_SCALAR
+00051     typedef float                               mediump_float_t;
+00052     typedef double                              highp_float_t;
+00053 
+00058     typedef lowp_float_t                lowp_float;
+00059     
+00064     typedef mediump_float_t     mediump_float;
+00065     
+00070     typedef highp_float_t               highp_float;
+00071 
+00072 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+00073         typedef mediump_float                           float_t;
+00074 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+00075         typedef highp_float                  float_t;
+00076 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+00077         typedef mediump_float                           float_t;
+00078 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
+00079         typedef lowp_float                                      float_t;
+00080 #else
+00081 #       error "GLM error: multiple default precision requested for floating-point types"
+00082 #endif
+00083 
+00084 }//namespace glm
+00085 
+00086 #endif//glm_core_type_float
+
+
+ + + diff --git a/doc/api-0.9.3/a00109.html b/doc/api-0.9.3/a00109.html new file mode 100644 index 00000000..9d6581a1 --- /dev/null +++ b/doc/api-0.9.3/a00109.html @@ -0,0 +1,63 @@ + + + + +type_gentype.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

type_gentype.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-10-05 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_gentype.hpp.

+
+ + + diff --git a/doc/api-0.9.2/a00112_source.html b/doc/api-0.9.3/a00109_source.html similarity index 50% rename from doc/api-0.9.2/a00112_source.html rename to doc/api-0.9.3/a00109_source.html index 12320c2d..c5c13e06 100644 --- a/doc/api-0.9.2/a00112_source.html +++ b/doc/api-0.9.3/a00109_source.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
type_gentype.hpp
+

type_gentype.hpp

-
00001 
-00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
-00004 // Created : 2008-10-05
-00005 // Updated : 2010-01-26
-00006 // Licence : This source is under MIT License
-00007 // File    : glm/core/type_gentype.hpp
-00009 
-00010 #ifndef glm_core_type_gentype
-00011 #define glm_core_type_gentype
-00012 
-00013 #include "type_size.hpp"
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
 00014 
-00015 namespace glm
-00016 {
-00017         enum profile
-00018         {
-00019                 nice,
-00020                 fast,
-00021                 simd
-00022         };
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
 00023 
-00024 namespace detail
-00025 {
-00026         template
-00027         <
-00028                 typename VALTYPE, 
-00029                 template <typename> class TYPE
-00030         >
-00031         struct genType
-00032         {
-00033         public:
-00034                 enum ctor{null};
-00035 
-00036                 typedef VALTYPE value_type;
-00037                 typedef VALTYPE & value_reference;
-00038                 typedef VALTYPE * value_pointer;
-00039                 typedef VALTYPE const * value_const_pointer;
-00040                 typedef TYPE<bool> bool_type;
-00041 
-00042                 typedef sizeType size_type;
-00043                 static bool is_vector();
-00044                 static bool is_matrix();
-00045                 
-00046                 typedef TYPE<VALTYPE> type;
-00047                 typedef TYPE<VALTYPE> * pointer;
-00048                 typedef TYPE<VALTYPE> const * const_pointer;
-00049                 typedef TYPE<VALTYPE> const * const const_pointer_const;
-00050                 typedef TYPE<VALTYPE> * const pointer_const;
-00051                 typedef TYPE<VALTYPE> & reference;
-00052                 typedef TYPE<VALTYPE> const & const_reference;
-00053                 typedef TYPE<VALTYPE> const & param_type;
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_gentype
+00030 #define glm_core_type_gentype
+00031 
+00032 #include "type_size.hpp"
+00033 
+00034 namespace glm
+00035 {
+00036         enum profile
+00037         {
+00038                 nice,
+00039                 fast,
+00040                 simd
+00041         };
+00042 
+00043 namespace detail
+00044 {
+00045         template
+00046         <
+00047                 typename VALTYPE, 
+00048                 template <typename> class TYPE
+00049         >
+00050         struct genType
+00051         {
+00052         public:
+00053                 enum ctor{null};
 00054 
-00056                 // Address (Implementation details)
-00057 
-00058                 value_const_pointer value_address() const{return value_pointer(this);}
-00059                 value_pointer value_address(){return value_pointer(this);}
+00055                 typedef VALTYPE value_type;
+00056                 typedef VALTYPE & value_reference;
+00057                 typedef VALTYPE * value_pointer;
+00058                 typedef VALTYPE const * value_const_pointer;
+00059                 typedef TYPE<bool> bool_type;
 00060 
-00061         //protected:
-00062         //      enum kind
-00063         //      {
-00064         //              GEN_TYPE,
-00065         //              VEC_TYPE,
-00066         //              MAT_TYPE
-00067         //      };
-00068 
-00069         //      typedef typename TYPE::kind kind;
-00070         };
-00071 
-00072         template
-00073         <
-00074                 typename VALTYPE, 
-00075                 template <typename> class TYPE
-00076         >
-00077         bool genType<VALTYPE, TYPE>::is_vector()
-00078         {
-00079                 return true;
-00080         }
-00081 /*
-00082         template <typename valTypeT, unsigned int colT, unsigned int rowT, profile proT = nice>
-00083         class base
-00084         {
-00085         public:
-00087                 // Traits
-00088 
-00089                 typedef sizeType                                                        size_type;
-00090                 typedef valTypeT                                                        value_type;
-00091 
-00092                 typedef base<value_type, colT, rowT>            class_type;
-00093 
-00094                 typedef base<bool, colT, rowT>                          bool_type;
-00095                 typedef base<value_type, rowT, 1>                       col_type;
-00096                 typedef base<value_type, colT, 1>                       row_type;
-00097                 typedef base<value_type, rowT, colT>            transpose_type;
-00098 
-00099                 static size_type                                                        col_size();
-00100                 static size_type                                                        row_size();
-00101                 static size_type                                                        value_size();
-00102                 static bool                                                                     is_scalar();
-00103                 static bool                                                                     is_vector();
-00104                 static bool                                                                     is_matrix();
-00105 
-00106         private:
-00107                 // Data 
-00108                 col_type value[colT];           
-00109 
-00110         public:
-00112                 // Constructors
-00113                 base();
-00114                 base(class_type const & m);
-00115 
-00116                 explicit base(value_type const & x);
-00117                 explicit base(value_type const * const x);
-00118                 explicit base(col_type const * const x);
-00119 
-00121                 // Conversions
-00122                 template <typename vU, uint cU, uint rU, profile pU>
-00123                 explicit base(base<vU, cU, rU, pU> const & m);
+00061                 typedef sizeType size_type;
+00062                 static bool is_vector();
+00063                 static bool is_matrix();
+00064                 
+00065                 typedef TYPE<VALTYPE> type;
+00066                 typedef TYPE<VALTYPE> * pointer;
+00067                 typedef TYPE<VALTYPE> const * const_pointer;
+00068                 typedef TYPE<VALTYPE> const * const const_pointer_const;
+00069                 typedef TYPE<VALTYPE> * const pointer_const;
+00070                 typedef TYPE<VALTYPE> & reference;
+00071                 typedef TYPE<VALTYPE> const & const_reference;
+00072                 typedef TYPE<VALTYPE> const & param_type;
+00073 
+00075                 // Address (Implementation details)
+00076 
+00077                 value_const_pointer value_address() const{return value_pointer(this);}
+00078                 value_pointer value_address(){return value_pointer(this);}
+00079 
+00080         //protected:
+00081         //      enum kind
+00082         //      {
+00083         //              GEN_TYPE,
+00084         //              VEC_TYPE,
+00085         //              MAT_TYPE
+00086         //      };
+00087 
+00088         //      typedef typename TYPE::kind kind;
+00089         };
+00090 
+00091         template
+00092         <
+00093                 typename VALTYPE, 
+00094                 template <typename> class TYPE
+00095         >
+00096         bool genType<VALTYPE, TYPE>::is_vector()
+00097         {
+00098                 return true;
+00099         }
+00100 /*
+00101         template <typename valTypeT, unsigned int colT, unsigned int rowT, profile proT = nice>
+00102         class base
+00103         {
+00104         public:
+00106                 // Traits
+00107 
+00108                 typedef sizeType                                                        size_type;
+00109                 typedef valTypeT                                                        value_type;
+00110 
+00111                 typedef base<value_type, colT, rowT>            class_type;
+00112 
+00113                 typedef base<bool, colT, rowT>                          bool_type;
+00114                 typedef base<value_type, rowT, 1>                       col_type;
+00115                 typedef base<value_type, colT, 1>                       row_type;
+00116                 typedef base<value_type, rowT, colT>            transpose_type;
+00117 
+00118                 static size_type                                                        col_size();
+00119                 static size_type                                                        row_size();
+00120                 static size_type                                                        value_size();
+00121                 static bool                                                                     is_scalar();
+00122                 static bool                                                                     is_vector();
+00123                 static bool                                                                     is_matrix();
 00124 
-00126                 // Accesses
-00127                 col_type& operator[](size_type i);
-00128                 col_type const & operator[](size_type i) const;
-00129 
-00131                 // Unary updatable operators
-00132                 class_type& operator=  (class_type const & x);
-00133                 class_type& operator+= (value_type const & x);
-00134                 class_type& operator+= (class_type const & x);
-00135                 class_type& operator-= (value_type const & x);
-00136                 class_type& operator-= (class_type const & x);
-00137                 class_type& operator*= (value_type const & x);
-00138                 class_type& operator*= (class_type const & x);
-00139                 class_type& operator/= (value_type const & x);
-00140                 class_type& operator/= (class_type const & x);
-00141                 class_type& operator++ ();
-00142                 class_type& operator-- ();
-00143         };
-00144 */
-00145         }//namespace detail
-00146 }//namespace glm
-00147 
-00148 //#include "type_gentype.inl"
-00149 
-00150 #endif//glm_core_type_gentype
+00125         private:
+00126                 // Data 
+00127                 col_type value[colT];           
+00128 
+00129         public:
+00131                 // Constructors
+00132                 base();
+00133                 base(class_type const & m);
+00134 
+00135                 explicit base(value_type const & x);
+00136                 explicit base(value_type const * const x);
+00137                 explicit base(col_type const * const x);
+00138 
+00140                 // Conversions
+00141                 template <typename vU, uint cU, uint rU, profile pU>
+00142                 explicit base(base<vU, cU, rU, pU> const & m);
+00143 
+00145                 // Accesses
+00146                 col_type& operator[](size_type i);
+00147                 col_type const & operator[](size_type i) const;
+00148 
+00150                 // Unary updatable operators
+00151                 class_type& operator=  (class_type const & x);
+00152                 class_type& operator+= (value_type const & x);
+00153                 class_type& operator+= (class_type const & x);
+00154                 class_type& operator-= (value_type const & x);
+00155                 class_type& operator-= (class_type const & x);
+00156                 class_type& operator*= (value_type const & x);
+00157                 class_type& operator*= (class_type const & x);
+00158                 class_type& operator/= (value_type const & x);
+00159                 class_type& operator/= (class_type const & x);
+00160                 class_type& operator++ ();
+00161                 class_type& operator-- ();
+00162         };
+00163 */
+00164         }//namespace detail
+00165 }//namespace glm
+00166 
+00167 //#include "type_gentype.inl"
+00168 
+00169 #endif//glm_core_type_gentype
 
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00110.html b/doc/api-0.9.3/a00110.html new file mode 100644 index 00000000..8aeaec10 --- /dev/null +++ b/doc/api-0.9.3/a00110.html @@ -0,0 +1,69 @@ + + + + +type_half.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_half.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + +

+Classes

class  thalf
 16-bit floating point type. More...
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-17 / 2011-09-20
+
Author:
Christophe Riccio
+ +

Definition in file type_half.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00110_source.html b/doc/api-0.9.3/a00110_source.html new file mode 100644 index 00000000..d407ae9f --- /dev/null +++ b/doc/api-0.9.3/a00110_source.html @@ -0,0 +1,163 @@ + + + + +type_half.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_half.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_half
+00030 #define glm_core_type_half
+00031 
+00032 #include <cstdlib>
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         typedef short hdata;
+00038 
+00039         float toFloat32(hdata value);
+00040         hdata toFloat16(float const & value);
+00041 
+00044         class thalf
+00045         {
+00046         public: 
+00047                 // Constructors
+00048                 GLM_FUNC_DECL thalf();
+00049                 GLM_FUNC_DECL thalf(thalf const & s);
+00050                         
+00051                 template <typename U>
+00052                 GLM_FUNC_DECL explicit thalf(U const & s);
+00053 
+00054                 // Cast
+00055                 template <typename U>
+00056                 GLM_FUNC_DECL operator U() const;
+00057 
+00058                 // Unary updatable operators
+00059                 GLM_FUNC_DECL thalf& operator= (thalf const & s);
+00060                 GLM_FUNC_DECL thalf& operator+=(thalf const & s);
+00061                 GLM_FUNC_DECL thalf& operator-=(thalf const & s);
+00062                 GLM_FUNC_DECL thalf& operator*=(thalf const & s);
+00063                 GLM_FUNC_DECL thalf& operator/=(thalf const & s);
+00064                 GLM_FUNC_DECL thalf& operator++();
+00065                 GLM_FUNC_DECL thalf& operator--();
+00066         
+00067                 GLM_FUNC_DECL float toFloat() const{return toFloat32(data);}
+00068 
+00069                 GLM_FUNC_DECL hdata _data() const{return data;}
+00070 
+00071         private:
+00072                 hdata data;
+00073         };
+00074 
+00075         thalf operator+ (thalf const & s1, thalf const & s2);
+00076 
+00077         thalf operator- (thalf const & s1, thalf const & s2);
+00078 
+00079         thalf operator* (thalf const & s1, thalf const & s2);
+00080 
+00081         thalf operator/ (thalf const & s1, thalf const & s2);
+00082 
+00083         // Unary constant operators
+00084         thalf operator- (thalf const & s);
+00085 
+00086         thalf operator-- (thalf const & s, int);
+00087 
+00088         thalf operator++ (thalf const & s, int);
+00089 
+00090         bool operator==(
+00091                 detail::thalf const & x, 
+00092                 detail::thalf const & y);
+00093 
+00094         bool operator!=(
+00095                 detail::thalf const & x, 
+00096                 detail::thalf const & y);
+00097 
+00098         bool operator<(
+00099                 detail::thalf const & x, 
+00100                 detail::thalf const & y);
+00101 
+00102         bool operator<=(
+00103                 detail::thalf const & x, 
+00104                 detail::thalf const & y);
+00105 
+00106         bool operator>(
+00107                 detail::thalf const & x, 
+00108                 detail::thalf const & y);
+00109 
+00110         bool operator>=(
+00111                 detail::thalf const & x, 
+00112                 detail::thalf const & y);
+00113 
+00114 }//namespace detail
+00115 }//namespace glm
+00116 
+00117 #include "type_half.inl"
+00118 
+00119 #endif//glm_core_type_half
+
+
+ + + diff --git a/doc/api-0.9.3/a00111.html b/doc/api-0.9.3/a00111.html new file mode 100644 index 00000000..a647176c --- /dev/null +++ b/doc/api-0.9.3/a00111.html @@ -0,0 +1,74 @@ + + + + +type_int.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_int.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + +

+Typedefs

typedef detail::highp_int_t highp_int
typedef detail::highp_uint_t highp_uint
typedef detail::lowp_int_t lowp_int
typedef detail::lowp_uint_t lowp_uint
typedef detail::mediump_int_t mediump_int
typedef detail::mediump_uint_t mediump_uint
typedef uint_t uint
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-22 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_int.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00111_source.html b/doc/api-0.9.3/a00111_source.html new file mode 100644 index 00000000..e6f0895e --- /dev/null +++ b/doc/api-0.9.3/a00111_source.html @@ -0,0 +1,145 @@ + + + + +type_int.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_int.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_int
+00030 #define glm_core_type_int
+00031 
+00032 #include "setup.hpp"
+00033 #include "_detail.hpp"
+00034 
+00035 namespace glm{
+00036 namespace detail
+00037 {
+00038         typedef signed short                    lowp_int_t;
+00039         typedef signed int                              mediump_int_t;
+00040         typedef sint64                                  highp_int_t;
+00041 
+00042         typedef unsigned short                  lowp_uint_t;
+00043         typedef unsigned int                    mediump_uint_t;
+00044         typedef uint64                                  highp_uint_t;
+00045 
+00046         GLM_DETAIL_IS_INT(signed char);
+00047         GLM_DETAIL_IS_INT(signed short);
+00048         GLM_DETAIL_IS_INT(signed int);
+00049         GLM_DETAIL_IS_INT(signed long);
+00050         GLM_DETAIL_IS_INT(highp_int_t);
+00051 
+00052         GLM_DETAIL_IS_UINT(unsigned char);
+00053         GLM_DETAIL_IS_UINT(unsigned short);
+00054         GLM_DETAIL_IS_UINT(unsigned int);
+00055         GLM_DETAIL_IS_UINT(unsigned long);
+00056         GLM_DETAIL_IS_UINT(highp_uint_t);
+00057 }//namespace detail
+00058 
+00063         typedef detail::lowp_int_t                              lowp_int;
+00064     
+00069         typedef detail::mediump_int_t                   mediump_int;
+00070     
+00075         typedef detail::highp_int_t                             highp_int;
+00076 
+00081         typedef detail::lowp_uint_t                             lowp_uint;
+00082     
+00087         typedef detail::mediump_uint_t                  mediump_uint;
+00088     
+00093         typedef detail::highp_uint_t                            highp_uint;
+00094 
+00095 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
+00096         typedef mediump_int                 int_t;
+00097 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
+00098         typedef highp_int                                       int_t;
+00099 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
+00100         typedef mediump_int                 int_t;
+00101 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT))
+00102         typedef lowp_int                                        int_t;
+00103 #else
+00104 #       error "GLM error: multiple default precision requested for signed interger types"
+00105 #endif
+00106 
+00107 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
+00108         typedef mediump_uint                            uint_t;
+00109 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
+00110         typedef highp_uint                                      uint_t;
+00111 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
+00112         typedef mediump_uint                            uint_t;
+00113 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT))
+00114         typedef lowp_uint                                       uint_t;
+00115 #else
+00116 #       error "GLM error: multiple default precision requested for unsigned interger types"
+00117 #endif
+00118 
+00121         typedef uint_t                                                          uint;
+00122 
+00123 }//namespace glm
+00124 
+00125 #endif//glm_core_type_int
+
+
+ + + diff --git a/doc/api-0.9.3/a00112.html b/doc/api-0.9.3/a00112.html new file mode 100644 index 00000000..d06952a1 --- /dev/null +++ b/doc/api-0.9.3/a00112.html @@ -0,0 +1,63 @@ + + + + +type_mat.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

type_mat.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2010-01-26 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00112_source.html b/doc/api-0.9.3/a00112_source.html new file mode 100644 index 00000000..7ef56143 --- /dev/null +++ b/doc/api-0.9.3/a00112_source.html @@ -0,0 +1,121 @@ + + + + +type_mat.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat
+00030 #define glm_core_type_mat
+00031 
+00032 #include "type_gentype.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         //template 
+00038         //<
+00039         //      typename T, 
+00040         //      template <typename> class C, 
+00041         //      template <typename> class R
+00042         //>
+00043         //struct matType
+00044         //{
+00045         //      enum ctor{null};
+00046         //      typedef T value_type;
+00047         //      typedef std::size_t size_type;
+00048         //      typedef C<T> col_type;
+00049         //      typedef R<T> row_type;
+00050         //      static size_type const col_size;
+00051         //      static size_type const row_size;
+00052         //};
+00053 
+00054         //template 
+00055         //<
+00056         //      typename T, 
+00057         //      template <typename> class C, 
+00058         //      template <typename> class R
+00059         //>
+00060         //typename matType<T, C, R>::size_type const 
+00061         //matType<T, C, R>::col_size = matType<T, C, R>::col_type::value_size;
+00062 
+00063         //template 
+00064         //<
+00065         //      typename T, 
+00066         //      template <typename> class C, 
+00067         //      template <typename> class R
+00068         //>
+00069         //typename matType<T, C, R>::size_type const 
+00070         //matType<T, C, R>::row_size = matType<T, C, R>::row_type::value_size;
+00071 
+00072 }//namespace detail
+00073 }//namespace glm
+00074 
+00075 #endif//glm_core_type_mat
+
+
+ + + diff --git a/doc/api-0.9.3/a00113.html b/doc/api-0.9.3/a00113.html new file mode 100644 index 00000000..e1eca9dd --- /dev/null +++ b/doc/api-0.9.3/a00113.html @@ -0,0 +1,84 @@ + + + + +type_mat2x2.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat2x2.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

struct  tmat2x2< T >
 Template for 2 * 2 matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat2x2
+< highp_float > 
highp_mat2
typedef detail::tmat2x2
+< highp_float > 
highp_mat2x2
typedef detail::tmat2x2
+< lowp_float > 
lowp_mat2
typedef detail::tmat2x2
+< lowp_float > 
lowp_mat2x2
typedef detail::tmat2x2
+< mediump_float > 
mediump_mat2
typedef detail::tmat2x2
+< mediump_float > 
mediump_mat2x2
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2005-01-27 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat2x2.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00113_source.html b/doc/api-0.9.3/a00113_source.html new file mode 100644 index 00000000..f4aab099 --- /dev/null +++ b/doc/api-0.9.3/a00113_source.html @@ -0,0 +1,319 @@ + + + + +type_mat2x2.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat2x2.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat2x2
+00030 #define glm_core_type_mat2x2
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat2x2
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec2<T> col_type;
+00060                 typedef tvec2<T> row_type;
+00061                 GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat2x2<T> type;
+00066                 typedef tmat2x2<T> transpose_type;
+00067 
+00068         public:
+00069                 // Implementation detail
+00070                 GLM_FUNC_DECL tmat2x2<T> _inverse() const;
+00071 
+00072         private:
+00074                 // Data 
+00075                 col_type value[2];
+00076 
+00077         public:
+00079                 // Constructors
+00080                 GLM_FUNC_DECL tmat2x2();
+00081                 GLM_FUNC_DECL tmat2x2(
+00082                         tmat2x2 const & m);
+00083 
+00084                 GLM_FUNC_DECL explicit tmat2x2(
+00085                         ctor Null);
+00086                 GLM_FUNC_DECL explicit tmat2x2(
+00087                         value_type const & x);
+00088                 GLM_FUNC_DECL explicit tmat2x2(
+00089                         value_type const & x1, value_type const & y1, 
+00090                         value_type const & x2, value_type const & y2);
+00091                 GLM_FUNC_DECL explicit tmat2x2(
+00092                         col_type const & v1, 
+00093                         col_type const & v2);
+00094 
+00096                 // Conversions
+00097                 template <typename U> 
+00098                 GLM_FUNC_DECL explicit tmat2x2(
+00099                         U const & x);
+00100 
+00101                 template <typename U, typename V, typename M, typename N> 
+00102                 GLM_FUNC_DECL explicit tmat2x2(
+00103                         U const & x1, V const & y1, 
+00104                         M const & x2, N const & y2);
+00105                         
+00106                 template <typename U, typename V> 
+00107                 GLM_FUNC_DECL explicit tmat2x2(
+00108                         tvec2<U> const & v1, 
+00109                         tvec2<V> const & v2);
+00110 
+00112                 // Matrix conversions
+00113                 template <typename U> 
+00114                 GLM_FUNC_DECL explicit tmat2x2(tmat2x2<U> const & m);
+00115 
+00116                 GLM_FUNC_DECL explicit tmat2x2(tmat3x3<T> const & x);
+00117                 GLM_FUNC_DECL explicit tmat2x2(tmat4x4<T> const & x);
+00118                 GLM_FUNC_DECL explicit tmat2x2(tmat2x3<T> const & x);
+00119                 GLM_FUNC_DECL explicit tmat2x2(tmat3x2<T> const & x);
+00120                 GLM_FUNC_DECL explicit tmat2x2(tmat2x4<T> const & x);
+00121                 GLM_FUNC_DECL explicit tmat2x2(tmat4x2<T> const & x);
+00122                 GLM_FUNC_DECL explicit tmat2x2(tmat3x4<T> const & x);
+00123                 GLM_FUNC_DECL explicit tmat2x2(tmat4x3<T> const & x);
+00124 
+00126                 // Accesses
+00127 
+00128                 GLM_FUNC_DECL col_type & operator[](size_type i);
+00129                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+00130 
+00131                 // Unary updatable operators
+00132                 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<T> const & m);
+00133                 template <typename U> 
+00134                 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<U> const & m);
+00135                 template <typename U> 
+00136                 GLM_FUNC_DECL tmat2x2<T> & operator+=(U const & s);
+00137                 template <typename U> 
+00138                 GLM_FUNC_DECL tmat2x2<T> & operator+=(tmat2x2<U> const & m);
+00139                 template <typename U> 
+00140                 GLM_FUNC_DECL tmat2x2<T> & operator-=(U const & s);
+00141                 template <typename U> 
+00142                 GLM_FUNC_DECL tmat2x2<T> & operator-=(tmat2x2<U> const & m);
+00143                 template <typename U> 
+00144                 GLM_FUNC_DECL tmat2x2<T> & operator*=(U const & s);
+00145                 template <typename U> 
+00146                 GLM_FUNC_DECL tmat2x2<T> & operator*=(tmat2x2<U> const & m);
+00147                 template <typename U> 
+00148                 GLM_FUNC_DECL tmat2x2<T> & operator/=(U const & s);
+00149                 template <typename U> 
+00150                 GLM_FUNC_DECL tmat2x2<T> & operator/=(tmat2x2<U> const & m);
+00151                 GLM_FUNC_DECL tmat2x2<T> & operator++();
+00152                 GLM_FUNC_DECL tmat2x2<T> & operator--();
+00153         };
+00154 
+00155         // Binary operators
+00156         template <typename T> 
+00157         tmat2x2<T> operator+ (
+00158                 tmat2x2<T> const & m, 
+00159                 typename tmat2x2<T>::value_type const & s);
+00160 
+00161         template <typename T> 
+00162         tmat2x2<T> operator+ (
+00163                 typename tmat2x2<T>::value_type const & s, 
+00164                 tmat2x2<T> const & m);
+00165 
+00166         template <typename T> 
+00167         tmat2x2<T> operator+ (
+00168                 tmat2x2<T> const & m1, 
+00169                 tmat2x2<T> const & m2);
+00170             
+00171         template <typename T> 
+00172         tmat2x2<T> operator- (
+00173                 tmat2x2<T> const & m, 
+00174                 typename tmat2x2<T>::value_type const & s);
+00175 
+00176         template <typename T> 
+00177         tmat2x2<T> operator- (
+00178                 typename tmat2x2<T>::value_type const & s, 
+00179                 tmat2x2<T> const & m);
+00180 
+00181         template <typename T> 
+00182         tmat2x2<T> operator- (
+00183                 tmat2x2<T> const & m1, 
+00184                 tmat2x2<T> const & m2);
+00185 
+00186         template <typename T> 
+00187         tmat2x2<T> operator* (
+00188                 tmat2x2<T> const & m, 
+00189                 typename tmat2x2<T>::value_type const & s);
+00190 
+00191         template <typename T> 
+00192         tmat2x2<T> operator* (
+00193                 typename tmat2x2<T>::value_type const & s, 
+00194                 tmat2x2<T> const & m);
+00195 
+00196         template <typename T> 
+00197         typename tmat2x2<T>::col_type operator* (
+00198                 tmat2x2<T> const & m, 
+00199                 typename tmat2x2<T>::row_type const & v);
+00200 
+00201         template <typename T> 
+00202         typename tmat2x2<T>::row_type operator* (
+00203                 typename tmat2x2<T>::col_type const & v, 
+00204                 tmat2x2<T> const & m);
+00205 
+00206         template <typename T> 
+00207         tmat2x2<T> operator* (
+00208                 tmat2x2<T> const & m1, 
+00209                 tmat2x2<T> const & m2);
+00210                 
+00211         template <typename T>
+00212         tmat3x2<T> operator* (
+00213                 tmat2x2<T> const & m1, 
+00214                 tmat3x2<T> const & m2);
+00215                 
+00216         template <typename T>
+00217         tmat4x2<T> operator* (
+00218                 tmat2x2<T> const & m1, 
+00219                 tmat4x2<T> const & m2);
+00220 
+00221         template <typename T> 
+00222         tmat2x2<T> operator/ (
+00223                 tmat2x2<T> const & m, 
+00224                 typename tmat2x2<T>::value_type const & s);
+00225 
+00226         template <typename T> 
+00227         tmat2x2<T> operator/ (
+00228                 typename tmat2x2<T>::value_type const & s,
+00229                 tmat2x2<T> const & m);
+00230 
+00231         template <typename T> 
+00232         typename tmat2x2<T>::col_type operator/ (
+00233                 tmat2x2<T> const & m, 
+00234                 typename tmat2x2<T>::row_type const & v);
+00235 
+00236         template <typename T> 
+00237         typename tmat2x2<T>::row_type operator/ (
+00238                 typename tmat2x2<T>::col_type const & v, 
+00239                 tmat2x2<T> const & m);
+00240 
+00241         template <typename T> 
+00242         tmat2x2<T> operator/ (
+00243                 tmat2x2<T> const & m1, 
+00244                 tmat2x2<T> const & m2);
+00245 
+00246         // Unary constant operators
+00247         template <typename T> 
+00248         tmat2x2<T> const operator-  (
+00249                 tmat2x2<T> const & m);
+00250 
+00251         template <typename T> 
+00252         tmat2x2<T> const operator-- (
+00253                 tmat2x2<T> const & m, 
+00254                 int);
+00255 
+00256         template <typename T> 
+00257         tmat2x2<T> const operator++ (
+00258                 tmat2x2<T> const & m, 
+00259                 int);
+00260 } //namespace detail
+00261 
+00266         typedef detail::tmat2x2<lowp_float>             lowp_mat2;
+00267 
+00272         typedef detail::tmat2x2<mediump_float>  mediump_mat2;
+00273 
+00278         typedef detail::tmat2x2<highp_float>    highp_mat2;
+00279 
+00284         typedef detail::tmat2x2<lowp_float>             lowp_mat2x2;
+00285 
+00290         typedef detail::tmat2x2<mediump_float>  mediump_mat2x2;
+00291 
+00296         typedef detail::tmat2x2<highp_float>    highp_mat2x2;
+00297 
+00298 }//namespace glm
+00299 
+00300 #ifndef GLM_EXTERNAL_TEMPLATE
+00301 #include "type_mat2x2.inl"
+00302 #endif
+00303 
+00304 #endif //glm_core_type_mat2x2
+
+
+ + + diff --git a/doc/api-0.9.3/a00114.html b/doc/api-0.9.3/a00114.html new file mode 100644 index 00000000..ca718693 --- /dev/null +++ b/doc/api-0.9.3/a00114.html @@ -0,0 +1,78 @@ + + + + +type_mat2x3.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat2x3.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  tmat2x3< T >
 Template for 2 columns and 3 rows matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat2x3
+< highp_float > 
highp_mat2x3
typedef detail::tmat2x3
+< lowp_float > 
lowp_mat2x3
typedef detail::tmat2x3
+< mediump_float > 
mediump_mat2x3
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-10-01 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat2x3.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00114_source.html b/doc/api-0.9.3/a00114_source.html new file mode 100644 index 00000000..561a690e --- /dev/null +++ b/doc/api-0.9.3/a00114_source.html @@ -0,0 +1,282 @@ + + + + +type_mat2x3.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat2x3.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat2x3
+00030 #define glm_core_type_mat2x3
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat2x3
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec3<T> col_type;
+00060                 typedef tvec2<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat2x3<T> type;
+00066                 typedef tmat3x2<T> transpose_type;
+00067 
+00068         private:
+00069                 // Data 
+00070                 col_type value[2];
+00071 
+00072         public:
+00073                 // Constructors
+00074                 GLM_FUNC_DECL tmat2x3();
+00075                 GLM_FUNC_DECL tmat2x3(tmat2x3 const & m);
+00076 
+00077                 GLM_FUNC_DECL explicit tmat2x3(
+00078                         ctor);
+00079                 GLM_FUNC_DECL explicit tmat2x3(
+00080                         value_type const & s);
+00081                 GLM_FUNC_DECL explicit tmat2x3(
+00082                         value_type const & x0, value_type const & y0, value_type const & z0,
+00083                         value_type const & x1, value_type const & y1, value_type const & z1);
+00084                 GLM_FUNC_DECL explicit tmat2x3(
+00085                         col_type const & v0, 
+00086                         col_type const & v1);
+00087             
+00089                 // Conversions
+00090                 template <typename U> 
+00091                 GLM_FUNC_DECL explicit tmat2x3(
+00092             U const & x);
+00093                         
+00094                 template <typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2> 
+00095                 GLM_FUNC_DECL explicit tmat2x3(
+00096             X1 const & x1, Y1 const & y1, Z1 const & z1, 
+00097             X2 const & x2, Y2 const & y2, Z2 const & z2);
+00098                         
+00099                 template <typename U, typename V> 
+00100                 GLM_FUNC_DECL explicit tmat2x3(
+00101             tvec3<U> const & v1, 
+00102             tvec3<V> const & v2);
+00103             
+00105         // Matrix conversion
+00106                 template <typename U> 
+00107                 GLM_FUNC_DECL explicit tmat2x3(tmat2x3<U> const & m);
+00108 
+00109                 GLM_FUNC_DECL explicit tmat2x3(tmat2x2<T> const & x);
+00110                 GLM_FUNC_DECL explicit tmat2x3(tmat3x3<T> const & x);
+00111                 GLM_FUNC_DECL explicit tmat2x3(tmat4x4<T> const & x);
+00112                 GLM_FUNC_DECL explicit tmat2x3(tmat2x4<T> const & x);
+00113                 GLM_FUNC_DECL explicit tmat2x3(tmat3x2<T> const & x);
+00114                 GLM_FUNC_DECL explicit tmat2x3(tmat3x4<T> const & x);
+00115                 GLM_FUNC_DECL explicit tmat2x3(tmat4x2<T> const & x);
+00116                 GLM_FUNC_DECL explicit tmat2x3(tmat4x3<T> const & x);
+00117 
+00118                 // Accesses
+00119                 col_type & operator[](size_type i);
+00120                 col_type const & operator[](size_type i) const;
+00121 
+00122                 // Unary updatable operators
+00123                 GLM_FUNC_DECL tmat2x3<T> & operator=  (tmat2x3<T> const & m);
+00124                 template <typename U> 
+00125                 GLM_FUNC_DECL tmat2x3<T> & operator=  (tmat2x3<U> const & m);
+00126                 template <typename U> 
+00127                 GLM_FUNC_DECL tmat2x3<T> & operator+= (U const & s);
+00128                 template <typename U> 
+00129                 GLM_FUNC_DECL tmat2x3<T> & operator+= (tmat2x3<U> const & m);
+00130                 template <typename U> 
+00131                 GLM_FUNC_DECL tmat2x3<T> & operator-= (U const & s);
+00132                 template <typename U> 
+00133                 GLM_FUNC_DECL tmat2x3<T> & operator-= (tmat2x3<U> const & m);
+00134                 template <typename U> 
+00135                 GLM_FUNC_DECL tmat2x3<T> & operator*= (U const & s);
+00136                 template <typename U> 
+00137                 GLM_FUNC_DECL tmat2x3<T> & operator*= (tmat2x3<U> const & m);
+00138                 template <typename U> 
+00139                 GLM_FUNC_DECL tmat2x3<T> & operator/= (U const & s);
+00140 
+00141                 GLM_FUNC_DECL tmat2x3<T> & operator++ ();
+00142                 GLM_FUNC_DECL tmat2x3<T> & operator-- ();
+00143         };
+00144 
+00145         // Binary operators
+00146         template <typename T> 
+00147         tmat2x3<T> operator+ (
+00148                 tmat2x3<T> const & m, 
+00149                 typename tmat2x3<T>::value_type const & s);
+00150             
+00151         template <typename T> 
+00152         tmat2x3<T> operator+ (
+00153                 tmat2x3<T> const & m1, 
+00154                 tmat2x3<T> const & m2);
+00155             
+00156         template <typename T> 
+00157         tmat2x3<T> operator- (
+00158                 tmat2x3<T> const & m, 
+00159                 typename tmat2x3<T>::value_type const & s);
+00160 
+00161         template <typename T> 
+00162         tmat2x3<T> operator- (
+00163                 tmat2x3<T> const & m1, 
+00164                 tmat2x3<T> const & m2);
+00165 
+00166         template <typename T> 
+00167         tmat2x3<T> operator* (
+00168                 tmat2x3<T> const & m, 
+00169                 typename tmat2x3<T>::value_type const & s);
+00170 
+00171         template <typename T> 
+00172         tmat2x3<T> operator* (
+00173                 typename tmat2x3<T>::value_type const & s, 
+00174                 tmat2x3<T> const & m);
+00175 
+00176         template <typename T>
+00177         typename tmat2x3<T>::col_type operator* (
+00178                 tmat2x3<T> const & m, 
+00179                 typename tmat2x3<T>::row_type const & v);
+00180 
+00181         template <typename T> 
+00182         typename tmat2x3<T>::row_type operator* (
+00183                 typename tmat2x3<T>::col_type const & v, 
+00184                 tmat2x3<T> const & m);
+00185 
+00186         template <typename T>
+00187         tmat2x3<T> operator* (
+00188                 tmat2x3<T> const & m1, 
+00189                 tmat2x2<T> const & m2);
+00190 
+00191         template <typename T>
+00192         tmat3x3<T> operator* (
+00193                 tmat2x3<T> const & m1, 
+00194                 tmat3x2<T> const & m2);
+00195                 
+00196         template <typename T>
+00197         tmat4x3<T> operator* (
+00198                 tmat2x3<T> const & m1, 
+00199                 tmat4x2<T> const & m2);
+00200 
+00201         template <typename T> 
+00202         tmat2x3<T> operator/ (
+00203                 tmat2x3<T> const & m, 
+00204                 typename tmat2x3<T>::value_type const & s);
+00205 
+00206         template <typename T> 
+00207         tmat2x3<T> operator/ (
+00208                 typename tmat2x3<T>::value_type const & s,
+00209                 tmat2x3<T> const & m);
+00210 
+00211         // Unary constant operators
+00212         template <typename T> 
+00213         tmat2x3<T> const operator-  (
+00214                 tmat2x3<T> const & m);
+00215 
+00216         template <typename T> 
+00217         tmat2x3<T> const operator-- (
+00218                 tmat2x3<T> const & m, 
+00219                 int);
+00220 
+00221         template <typename T> 
+00222         tmat2x3<T> const operator++ (
+00223                 tmat2x3<T> const & m, 
+00224                 int);
+00225 
+00226 } //namespace detail
+00227 
+00232         typedef detail::tmat2x3<lowp_float>             lowp_mat2x3;
+00233     
+00238         typedef detail::tmat2x3<mediump_float>  mediump_mat2x3;
+00239     
+00244         typedef detail::tmat2x3<highp_float>    highp_mat2x3;
+00245 
+00246 }//namespace glm
+00247 
+00248 #ifndef GLM_EXTERNAL_TEMPLATE
+00249 #include "type_mat2x3.inl"
+00250 #endif
+00251 
+00252 #endif //glm_core_type_mat2x3
+
+
+ + + diff --git a/doc/api-0.9.3/a00115.html b/doc/api-0.9.3/a00115.html new file mode 100644 index 00000000..d832064e --- /dev/null +++ b/doc/api-0.9.3/a00115.html @@ -0,0 +1,78 @@ + + + + +type_mat2x4.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat2x4.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  tmat2x4< T >
 Template for 2 columns and 4 rows matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat2x4
+< highp_float > 
highp_mat2x4
typedef detail::tmat2x4
+< lowp_float > 
lowp_mat2x4
typedef detail::tmat2x4
+< mediump_float > 
mediump_mat2x4
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-08-05 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat2x4.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00115_source.html b/doc/api-0.9.3/a00115_source.html new file mode 100644 index 00000000..86018d7a --- /dev/null +++ b/doc/api-0.9.3/a00115_source.html @@ -0,0 +1,282 @@ + + + + +type_mat2x4.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat2x4.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat2x4
+00030 #define glm_core_type_mat2x4
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat2x4
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec4<T> col_type;
+00060                 typedef tvec2<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat2x4<T> type;
+00066                 typedef tmat4x2<T> transpose_type;
+00067 
+00068         private:
+00069                 // Data 
+00070                 col_type value[2];
+00071 
+00072         public:
+00073                 // Constructors
+00074                 GLM_FUNC_DECL tmat2x4();
+00075                 GLM_FUNC_DECL tmat2x4(tmat2x4 const & m);
+00076 
+00077                 GLM_FUNC_DECL explicit tmat2x4(
+00078                         ctor);
+00079                 GLM_FUNC_DECL explicit tmat2x4(
+00080                         value_type const & s);
+00081                 GLM_FUNC_DECL explicit tmat2x4(
+00082                         value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
+00083                         value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1);
+00084                 GLM_FUNC_DECL explicit tmat2x4(
+00085                         col_type const & v0, 
+00086                         col_type const & v1);
+00087             
+00089                 // Conversions
+00090                 template <typename U> 
+00091                 GLM_FUNC_DECL explicit tmat2x4(
+00092             U const & x);
+00093                         
+00094                 template <
+00095             typename X1, typename Y1, typename Z1, typename W1, 
+00096             typename X2, typename Y2, typename Z2, typename W2> 
+00097                 GLM_FUNC_DECL explicit tmat2x4(
+00098             X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, 
+00099             X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2);
+00100                         
+00101                 template <typename U, typename V> 
+00102                 GLM_FUNC_DECL explicit tmat2x4(
+00103             tvec4<U> const & v1, 
+00104             tvec4<V> const & v2);
+00105             
+00107                 // Matrix conversions
+00108                 template <typename U> 
+00109                 GLM_FUNC_DECL explicit tmat2x4(tmat2x4<U> const & m);
+00110 
+00111                 GLM_FUNC_DECL explicit tmat2x4(tmat2x2<T> const & x);
+00112                 GLM_FUNC_DECL explicit tmat2x4(tmat3x3<T> const & x);
+00113                 GLM_FUNC_DECL explicit tmat2x4(tmat4x4<T> const & x);
+00114                 GLM_FUNC_DECL explicit tmat2x4(tmat2x3<T> const & x);
+00115                 GLM_FUNC_DECL explicit tmat2x4(tmat3x2<T> const & x);
+00116                 GLM_FUNC_DECL explicit tmat2x4(tmat3x4<T> const & x);
+00117                 GLM_FUNC_DECL explicit tmat2x4(tmat4x2<T> const & x);
+00118                 GLM_FUNC_DECL explicit tmat2x4(tmat4x3<T> const & x);
+00119 
+00120                 // Accesses
+00121                 GLM_FUNC_DECL col_type & operator[](size_type i);
+00122                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+00123 
+00124                 // Unary updatable operators
+00125                 GLM_FUNC_DECL tmat2x4<T>& operator=  (tmat2x4<T> const & m);
+00126                 template <typename U> 
+00127                 GLM_FUNC_DECL tmat2x4<T>& operator=  (tmat2x4<U> const & m);
+00128                 template <typename U> 
+00129                 GLM_FUNC_DECL tmat2x4<T>& operator+= (U const & s);
+00130                 template <typename U> 
+00131                 GLM_FUNC_DECL tmat2x4<T>& operator+= (tmat2x4<U> const & m);
+00132                 template <typename U> 
+00133                 GLM_FUNC_DECL tmat2x4<T>& operator-= (U const & s);
+00134                 template <typename U> 
+00135                 GLM_FUNC_DECL tmat2x4<T>& operator-= (tmat2x4<U> const & m);
+00136                 template <typename U> 
+00137                 GLM_FUNC_DECL tmat2x4<T>& operator*= (U const & s);
+00138                 template <typename U> 
+00139                 GLM_FUNC_DECL tmat2x4<T>& operator*= (tmat2x4<U> const & m);
+00140                 template <typename U> 
+00141                 GLM_FUNC_DECL tmat2x4<T>& operator/= (U const & s);
+00142 
+00143                 GLM_FUNC_DECL tmat2x4<T>& operator++ ();
+00144                 GLM_FUNC_DECL tmat2x4<T>& operator-- ();
+00145         };
+00146 
+00147         // Binary operators
+00148         template <typename T> 
+00149         tmat2x4<T> operator+ (
+00150                 tmat2x4<T> const & m, 
+00151                 typename tmat2x4<T>::value_type const & s);
+00152             
+00153         template <typename T> 
+00154         tmat2x4<T> operator+ (
+00155                 tmat2x4<T> const & m1, 
+00156                 tmat2x4<T> const & m2);
+00157             
+00158         template <typename T> 
+00159         tmat2x4<T> operator- (
+00160                 tmat2x4<T> const & m, 
+00161                 typename tmat2x4<T>::value_type const & s);
+00162 
+00163         template <typename T> 
+00164         tmat2x4<T> operator- (
+00165                 tmat2x4<T> const & m1, 
+00166                 tmat2x4<T> const & m2);
+00167 
+00168         template <typename T> 
+00169         tmat2x4<T> operator* (
+00170                 tmat2x4<T> const & m, 
+00171                 typename tmat2x4<T>::value_type const & s);
+00172 
+00173         template <typename T> 
+00174         tmat2x4<T> operator* (
+00175                 typename tmat2x4<T>::value_type const & s, 
+00176                 tmat2x4<T> const & m);
+00177 
+00178         template <typename T>
+00179         typename tmat2x4<T>::col_type operator* (
+00180                 tmat2x4<T> const & m, 
+00181                 typename tmat2x4<T>::row_type const & v);
+00182 
+00183         template <typename T> 
+00184         typename tmat2x4<T>::row_type operator* (
+00185                 typename tmat2x4<T>::col_type const & v, 
+00186                 tmat2x4<T> const & m);
+00187 
+00188         template <typename T>
+00189         tmat4x4<T> operator* (
+00190                 tmat2x4<T> const & m1, 
+00191                 tmat4x2<T> const & m2);
+00192                 
+00193         template <typename T>
+00194         tmat2x4<T> operator* (
+00195                 tmat2x4<T> const & m1, 
+00196                 tmat2x2<T> const & m2);
+00197                 
+00198         template <typename T>
+00199         tmat3x4<T> operator* (
+00200                 tmat2x4<T> const & m1, 
+00201                 tmat3x2<T> const & m2);
+00202 
+00203         template <typename T> 
+00204         tmat2x4<T> operator/ (
+00205                 tmat2x4<T> const & m, 
+00206                 typename tmat2x4<T>::value_type const & s);
+00207 
+00208         template <typename T> 
+00209         tmat2x4<T> operator/ (
+00210                 typename tmat2x4<T>::value_type const & s, 
+00211                 tmat2x4<T> const & m);
+00212 
+00213         // Unary constant operators
+00214         template <typename T> 
+00215         tmat2x4<T> const operator-  (
+00216                 tmat2x4<T> const & m);
+00217 
+00218         template <typename T> 
+00219         tmat2x4<T> const operator-- (
+00220                 tmat2x4<T> const & m, 
+00221                 int);
+00222 
+00223         template <typename T> 
+00224         tmat2x4<T> const operator++ (
+00225                 tmat2x4<T> const & m, 
+00226                 int);
+00227 
+00228 } //namespace detail
+00229 
+00233         typedef detail::tmat2x4<lowp_float>             lowp_mat2x4;
+00237         typedef detail::tmat2x4<mediump_float>  mediump_mat2x4;
+00241         typedef detail::tmat2x4<highp_float>    highp_mat2x4;
+00242 
+00243 }//namespace glm
+00244 
+00245 #ifndef GLM_EXTERNAL_TEMPLATE
+00246 #include "type_mat2x4.inl"
+00247 #endif
+00248 
+00249 #endif //glm_core_type_mat2x4
+
+
+ + + diff --git a/doc/api-0.9.3/a00116.html b/doc/api-0.9.3/a00116.html new file mode 100644 index 00000000..019a5ace --- /dev/null +++ b/doc/api-0.9.3/a00116.html @@ -0,0 +1,78 @@ + + + + +type_mat3x2.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat3x2.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  tmat3x2< T >
 Template for 3 columns and 2 rows matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat3x2
+< highp_float > 
highp_mat3x2
typedef detail::tmat3x2
+< lowp_float > 
lowp_mat3x2
typedef detail::tmat3x2
+< mediump_float > 
mediump_mat3x2
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-08-05 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat3x2.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00116_source.html b/doc/api-0.9.3/a00116_source.html new file mode 100644 index 00000000..26dae29b --- /dev/null +++ b/doc/api-0.9.3/a00116_source.html @@ -0,0 +1,291 @@ + + + + +type_mat3x2.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat3x2.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat3x2
+00030 #define glm_core_type_mat3x2
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat3x2
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec2<T> col_type;
+00060                 typedef tvec3<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat3x2<T> type;
+00066                 typedef tmat2x3<T> transpose_type;
+00067 
+00068         private:
+00069                 // Data
+00070                 col_type value[3];
+00071 
+00072         public:
+00073                 // Constructors
+00074                 GLM_FUNC_DECL tmat3x2();
+00075                 GLM_FUNC_DECL tmat3x2(tmat3x2 const & m);
+00076 
+00077                 GLM_FUNC_DECL explicit tmat3x2(
+00078                         ctor);
+00079                 GLM_FUNC_DECL explicit tmat3x2(
+00080                         value_type const & s);
+00081                 GLM_FUNC_DECL explicit tmat3x2(
+00082                         value_type const & x0, value_type const & y0,
+00083                         value_type const & x1, value_type const & y1,
+00084                         value_type const & x2, value_type const & y2);
+00085                 GLM_FUNC_DECL explicit tmat3x2(
+00086                         col_type const & v0, 
+00087                         col_type const & v1,
+00088                         col_type const & v2);
+00089 
+00091                 // Conversions
+00092                 template <typename U> 
+00093                 GLM_FUNC_DECL explicit tmat3x2(
+00094             U const & x);
+00095                         
+00096                 template 
+00097         <
+00098             typename X1, typename Y1, 
+00099             typename X2, typename Y2, 
+00100             typename X3, typename Y3
+00101         > 
+00102                 GLM_FUNC_DECL explicit tmat3x2(
+00103             X1 const & x1, Y1 const & y1, 
+00104             X2 const & x2, Y2 const & y2,
+00105             X3 const & x3, Y3 const & y3);
+00106                         
+00107                 template <typename V1, typename V2, typename V3> 
+00108                 GLM_FUNC_DECL explicit tmat3x2(
+00109             tvec2<V1> const & v1, 
+00110             tvec2<V2> const & v2,
+00111             tvec2<V3> const & v3);
+00112             
+00113                 // Matrix conversions
+00114                 template <typename U> 
+00115                 GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U> const & m);
+00116 
+00117                 GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T> const & x);
+00118                 GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T> const & x);
+00119                 GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T> const & x);
+00120                 GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T> const & x);
+00121                 GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T> const & x);
+00122                 GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T> const & x);
+00123                 GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T> const & x);
+00124                 GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T> const & x);
+00125 
+00126                 // Accesses
+00127                 GLM_FUNC_DECL col_type & operator[](size_type i);
+00128                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+00129 
+00130                 // Unary updatable operators
+00131                 GLM_FUNC_DECL tmat3x2<T> & operator=  (tmat3x2<T> const & m);
+00132                 template <typename U> 
+00133                 GLM_FUNC_DECL tmat3x2<T> & operator=  (tmat3x2<U> const & m);
+00134                 template <typename U> 
+00135                 GLM_FUNC_DECL tmat3x2<T> & operator+= (U const & s);
+00136                 template <typename U> 
+00137                 GLM_FUNC_DECL tmat3x2<T> & operator+= (tmat3x2<U> const & m);
+00138                 template <typename U> 
+00139                 GLM_FUNC_DECL tmat3x2<T> & operator-= (U const & s);
+00140                 template <typename U> 
+00141                 GLM_FUNC_DECL tmat3x2<T> & operator-= (tmat3x2<U> const & m);
+00142                 template <typename U> 
+00143                 GLM_FUNC_DECL tmat3x2<T> & operator*= (U const & s);
+00144                 template <typename U> 
+00145                 GLM_FUNC_DECL tmat3x2<T> & operator*= (tmat3x2<U> const & m);
+00146                 template <typename U> 
+00147                 GLM_FUNC_DECL tmat3x2<T> & operator/= (U const & s);
+00148 
+00149                 GLM_FUNC_DECL tmat3x2<T> & operator++ ();
+00150                 GLM_FUNC_DECL tmat3x2<T> & operator-- ();
+00151         };
+00152 
+00153         // Binary operators
+00154         template <typename T> 
+00155         tmat3x2<T> operator+ (
+00156                 tmat3x2<T> const & m, 
+00157                 typename tmat3x2<T>::value_type const & s);
+00158             
+00159         template <typename T> 
+00160         tmat3x2<T> operator+ (
+00161                 tmat3x2<T> const & m1, 
+00162                 tmat3x2<T> const & m2);
+00163             
+00164         template <typename T> 
+00165         tmat3x2<T> operator- (
+00166                 tmat3x2<T> const & m, 
+00167                 typename tmat3x2<T>::value_type const & s);
+00168 
+00169         template <typename T> 
+00170         tmat3x2<T> operator- (
+00171                 tmat3x2<T> const & m1, 
+00172                 tmat3x2<T> const & m2);
+00173 
+00174         template <typename T> 
+00175         tmat3x2<T> operator* (
+00176                 tmat3x2<T> const & m, 
+00177                 typename tmat3x2<T>::value_type const & s);
+00178 
+00179         template <typename T> 
+00180         tmat3x2<T> operator* (
+00181                 typename tmat3x2<T>::value_type const & s, 
+00182                 tmat3x2<T> const & m);
+00183 
+00184         template <typename T>
+00185         typename tmat3x2<T>::col_type operator* (
+00186                 tmat3x2<T> const & m, 
+00187                 typename tmat3x2<T>::row_type const & v);
+00188 
+00189         template <typename T> 
+00190         typename tmat3x2<T>::row_type operator* (
+00191                 typename tmat3x2<T>::col_type const & v,
+00192                 tmat3x2<T> const & m);
+00193 
+00194         template <typename T>
+00195         tmat2x2<T> operator* (
+00196                 tmat3x2<T> const & m1, 
+00197                 tmat2x3<T> const & m2);
+00198                 
+00199         template <typename T>
+00200         tmat3x2<T> operator* (
+00201                 tmat3x2<T> const & m1, 
+00202                 tmat3x3<T> const & m2);
+00203                 
+00204         template <typename T>
+00205         tmat4x2<T> operator* (
+00206                 tmat3x2<T> const & m1, 
+00207                 tmat4x3<T> const & m2);
+00208 
+00209         template <typename T> 
+00210         tmat3x2<T> operator/ (
+00211                 tmat3x2<T> const & m, 
+00212                 typename tmat3x2<T>::value_type const & s);
+00213 
+00214         template <typename T> 
+00215         tmat3x2<T> operator/ (
+00216                 typename tmat3x2<T>::value_type const & s, 
+00217                 tmat3x2<T> const & m);
+00218 
+00219         // Unary constant operators
+00220         template <typename T> 
+00221         tmat3x2<T> const operator-  (
+00222                 tmat3x2<T> const & m);
+00223 
+00224         template <typename T> 
+00225         tmat3x2<T> const operator-- (
+00226                 tmat3x2<T> const & m, 
+00227                 int);
+00228 
+00229         template <typename T> 
+00230         tmat3x2<T> const operator++ (
+00231                 tmat3x2<T> const & m, 
+00232                 int);
+00233 
+00234 } //namespace detail
+00235 
+00239         typedef detail::tmat3x2<lowp_float>             lowp_mat3x2;
+00240     
+00244         typedef detail::tmat3x2<mediump_float>  mediump_mat3x2;
+00245     
+00249         typedef detail::tmat3x2<highp_float>    highp_mat3x2;
+00250 
+00251 }//namespace glm
+00252 
+00253 #ifndef GLM_EXTERNAL_TEMPLATE
+00254 #include "type_mat3x2.inl"
+00255 #endif
+00256 
+00257 #endif //glm_core_type_mat3x2
+
+
+ + + diff --git a/doc/api-0.9.3/a00117.html b/doc/api-0.9.3/a00117.html new file mode 100644 index 00000000..136a1328 --- /dev/null +++ b/doc/api-0.9.3/a00117.html @@ -0,0 +1,84 @@ + + + + +type_mat3x3.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat3x3.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

struct  tmat3x3< T >
 Template for 3 * 3 matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat3x3
+< highp_float > 
highp_mat3
typedef detail::tmat3x3
+< highp_float > 
highp_mat3x3
typedef detail::tmat3x3
+< lowp_float > 
lowp_mat3
typedef detail::tmat3x3
+< lowp_float > 
lowp_mat3x3
typedef detail::tmat3x3
+< mediump_float > 
mediump_mat3
typedef detail::tmat3x3
+< mediump_float > 
mediump_mat3x3
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2005-01-27 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat3x3.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00117_source.html b/doc/api-0.9.3/a00117_source.html new file mode 100644 index 00000000..4b4e667b --- /dev/null +++ b/doc/api-0.9.3/a00117_source.html @@ -0,0 +1,325 @@ + + + + +type_mat3x3.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat3x3.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat3x3
+00030 #define glm_core_type_mat3x3
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat3x3
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec3<T> col_type;
+00060                 typedef tvec3<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat3x3<T> type;
+00066                 typedef tmat3x3<T> transpose_type;
+00067 
+00068         public:
+00069                 // Implementation detail
+00070                 GLM_FUNC_DECL tmat3x3<T> _inverse() const;
+00071 
+00072         private:
+00073                 // Data
+00074                 col_type value[3];
+00075 
+00076         public:
+00077                 // Constructors
+00078                 GLM_FUNC_DECL tmat3x3();
+00079                 GLM_FUNC_DECL tmat3x3(tmat3x3 const & m);
+00080 
+00081                 GLM_FUNC_DECL explicit tmat3x3(
+00082                         ctor Null);
+00083                 GLM_FUNC_DECL explicit tmat3x3(
+00084                         value_type const & s);
+00085                 GLM_FUNC_DECL explicit tmat3x3(
+00086                         value_type const & x0, value_type const & y0, value_type const & z0,
+00087                         value_type const & x1, value_type const & y1, value_type const & z1,
+00088                         value_type const & x2, value_type const & y2, value_type const & z2);
+00089                 GLM_FUNC_DECL explicit tmat3x3(
+00090                         col_type const & v0, 
+00091                         col_type const & v1,
+00092                         col_type const & v2);
+00093 
+00095                 // Conversions
+00096                 template <typename U> 
+00097                 GLM_FUNC_DECL explicit tmat3x3(
+00098             U const & x);
+00099                         
+00100                 template 
+00101         <
+00102             typename X1, typename Y1, typename Z1, 
+00103             typename X2, typename Y2, typename Z2, 
+00104             typename X3, typename Y3, typename Z3
+00105         > 
+00106                 GLM_FUNC_DECL explicit tmat3x3(
+00107             X1 const & x1, Y1 const & y1, Z1 const & z1, 
+00108             X2 const & x2, Y2 const & y2, Z2 const & z2, 
+00109             X3 const & x3, Y3 const & y3, Z3 const & z3);
+00110                         
+00111                 template <typename V1, typename V2, typename V3> 
+00112                 GLM_FUNC_DECL explicit tmat3x3(
+00113             tvec3<V1> const & v1, 
+00114             tvec3<V2> const & v2,
+00115             tvec3<V3> const & v3);
+00116             
+00117                 // Matrix conversions
+00118                 template <typename U> 
+00119                 GLM_FUNC_DECL explicit tmat3x3(tmat3x3<U> const & m);
+00120 
+00121                 GLM_FUNC_DECL explicit tmat3x3(tmat2x2<T> const & x);
+00122                 GLM_FUNC_DECL explicit tmat3x3(tmat4x4<T> const & x);
+00123                 GLM_FUNC_DECL explicit tmat3x3(tmat2x3<T> const & x);
+00124                 GLM_FUNC_DECL explicit tmat3x3(tmat3x2<T> const & x);
+00125                 GLM_FUNC_DECL explicit tmat3x3(tmat2x4<T> const & x);
+00126                 GLM_FUNC_DECL explicit tmat3x3(tmat4x2<T> const & x);
+00127                 GLM_FUNC_DECL explicit tmat3x3(tmat3x4<T> const & x);
+00128                 GLM_FUNC_DECL explicit tmat3x3(tmat4x3<T> const & x);
+00129 
+00130                 // Accesses
+00131                 GLM_FUNC_DECL col_type & operator[](size_type i);
+00132                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+00133 
+00134                 // Unary updatable operators
+00135                 GLM_FUNC_DECL tmat3x3<T>& operator=  (tmat3x3<T> const & m);
+00136                 template <typename U> 
+00137                 GLM_FUNC_DECL tmat3x3<T>& operator=  (tmat3x3<U> const & m);
+00138                 template <typename U> 
+00139                 GLM_FUNC_DECL tmat3x3<T>& operator+= (U const & s);
+00140                 template <typename U> 
+00141                 GLM_FUNC_DECL tmat3x3<T>& operator+= (tmat3x3<U> const & m);
+00142                 template <typename U> 
+00143                 GLM_FUNC_DECL tmat3x3<T>& operator-= (U const & s);
+00144                 template <typename U> 
+00145                 GLM_FUNC_DECL tmat3x3<T>& operator-= (tmat3x3<U> const & m);
+00146                 template <typename U> 
+00147                 GLM_FUNC_DECL tmat3x3<T>& operator*= (U const & s);
+00148                 template <typename U> 
+00149                 GLM_FUNC_DECL tmat3x3<T>& operator*= (tmat3x3<U> const & m);
+00150                 template <typename U> 
+00151                 GLM_FUNC_DECL tmat3x3<T>& operator/= (U const & s);
+00152                 template <typename U> 
+00153                 GLM_FUNC_DECL tmat3x3<T>& operator/= (tmat3x3<U> const & m);
+00154                 GLM_FUNC_DECL tmat3x3<T>& operator++ ();
+00155                 GLM_FUNC_DECL tmat3x3<T>& operator-- ();
+00156         };
+00157 
+00158         // Binary operators
+00159         template <typename T> 
+00160         tmat3x3<T> operator+ (
+00161                 tmat3x3<T> const & m, 
+00162                 typename tmat3x3<T>::value_type const & s);
+00163 
+00164         template <typename T> 
+00165         tmat3x3<T> operator+ (
+00166                 typename tmat3x3<T>::value_type const & s, 
+00167                 tmat3x3<T> const & m);
+00168 
+00169         template <typename T> 
+00170         tmat3x3<T> operator+ (
+00171                 tmat3x3<T> const & m1, 
+00172                 tmat3x3<T> const & m2);
+00173             
+00174         template <typename T> 
+00175         tmat3x3<T> operator- (
+00176                 tmat3x3<T> const & m, 
+00177                 typename tmat3x3<T>::value_type const & s);
+00178 
+00179         template <typename T> 
+00180         tmat3x3<T> operator- (
+00181                 typename tmat3x3<T>::value_type const & s, 
+00182                 tmat3x3<T> const & m);
+00183 
+00184         template <typename T> 
+00185         tmat3x3<T> operator- (
+00186                 tmat3x3<T> const & m1, 
+00187                 tmat3x3<T> const & m2);
+00188 
+00189         template <typename T> 
+00190         tmat3x3<T> operator* (
+00191                 tmat3x3<T> const & m, 
+00192                 typename tmat3x3<T>::value_type const & s);
+00193 
+00194         template <typename T> 
+00195         tmat3x3<T> operator* (
+00196                 typename tmat3x3<T>::value_type const & s, 
+00197                 tmat3x3<T> const & m);
+00198 
+00199         template <typename T> 
+00200         typename tmat3x3<T>::col_type operator* (
+00201                 tmat3x3<T> const & m, 
+00202                 typename tmat3x3<T>::row_type const & v);
+00203 
+00204         template <typename T> 
+00205         typename tmat3x3<T>::row_type operator* (
+00206                 typename tmat3x3<T>::col_type const & v, 
+00207                 tmat3x3<T> const & m);
+00208 
+00209         template <typename T> 
+00210         tmat3x3<T> operator* (
+00211                 tmat3x3<T> const & m1, 
+00212                 tmat3x3<T> const & m2);
+00213                 
+00214         template <typename T>
+00215         tmat2x3<T> operator* (
+00216                 tmat3x3<T> const & m1, 
+00217                 tmat2x3<T> const & m2);
+00218                 
+00219         template <typename T>
+00220         tmat4x3<T> operator* (
+00221                 tmat3x3<T> const & m1, 
+00222                 tmat4x3<T> const & m2);
+00223 
+00224         template <typename T> 
+00225         tmat3x3<T> operator/ (
+00226                 tmat3x3<T> const & m, 
+00227                 typename tmat3x3<T>::value_type const & s);
+00228 
+00229         template <typename T> 
+00230         tmat3x3<T> operator/ (
+00231                 typename tmat3x3<T>::value_type const & s, 
+00232                 tmat3x3<T> const & m);
+00233 
+00234         template <typename T> 
+00235         typename tmat3x3<T>::col_type operator/ (
+00236                 tmat3x3<T> const & m, 
+00237                 typename tmat3x3<T>::row_type const & v);
+00238 
+00239         template <typename T> 
+00240         typename tmat3x3<T>::row_type operator/ (
+00241                 typename tmat3x3<T>::col_type const & v, 
+00242                 tmat3x3<T> const & m);
+00243 
+00244         template <typename T> 
+00245         tmat3x3<T> operator/ (
+00246                 tmat3x3<T> const & m1, 
+00247                 tmat3x3<T> const & m2);
+00248 
+00249         // Unary constant operators
+00250         template <typename T> 
+00251         tmat3x3<T> const operator-  (
+00252                 tmat3x3<T> const & m);
+00253 
+00254         template <typename T> 
+00255         tmat3x3<T> const operator-- (
+00256                 tmat3x3<T> const & m, 
+00257                 int);
+00258 
+00259         template <typename T> 
+00260         tmat3x3<T> const operator++ (
+00261                 tmat3x3<T> const & m, 
+00262                 int);
+00263 
+00264 } //namespace detail
+00265 
+00270         typedef detail::tmat3x3<lowp_float>             lowp_mat3;
+00275         typedef detail::tmat3x3<mediump_float>  mediump_mat3;
+00280         typedef detail::tmat3x3<highp_float>    highp_mat3;
+00281 
+00286         typedef detail::tmat3x3<lowp_float>             lowp_mat3x3;
+00287 
+00292         typedef detail::tmat3x3<mediump_float>  mediump_mat3x3;
+00293 
+00298         typedef detail::tmat3x3<highp_float>    highp_mat3x3;
+00299 
+00300 }//namespace glm
+00301 
+00302 #ifndef GLM_EXTERNAL_TEMPLATE
+00303 #include "type_mat3x3.inl"
+00304 #endif
+00305 
+00306 #endif //glm_core_type_mat3x3
+
+
+ + + diff --git a/doc/api-0.9.3/a00118.html b/doc/api-0.9.3/a00118.html new file mode 100644 index 00000000..865269d8 --- /dev/null +++ b/doc/api-0.9.3/a00118.html @@ -0,0 +1,78 @@ + + + + +type_mat3x4.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat3x4.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  tmat3x4< T >
 Template for 3 columns and 4 rows matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat3x4
+< highp_float > 
highp_mat3x4
typedef detail::tmat3x4
+< lowp_float > 
lowp_mat3x4
typedef detail::tmat3x4
+< mediump_float > 
mediump_mat3x4
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-08-05 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat3x4.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00118_source.html b/doc/api-0.9.3/a00118_source.html new file mode 100644 index 00000000..4f964ddb --- /dev/null +++ b/doc/api-0.9.3/a00118_source.html @@ -0,0 +1,289 @@ + + + + +type_mat3x4.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat3x4.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat3x4
+00030 #define glm_core_type_mat3x4
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat3x4
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec4<T> col_type;
+00060                 typedef tvec3<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat3x4<T> type;
+00066                 typedef tmat4x3<T> transpose_type;
+00067 
+00068         private:
+00069                 // Data 
+00070                 col_type value[3];
+00071 
+00072         public:
+00073                 // Constructors
+00074                 GLM_FUNC_DECL tmat3x4();
+00075                 GLM_FUNC_DECL tmat3x4(tmat3x4 const & m);
+00076 
+00077                 GLM_FUNC_DECL explicit tmat3x4(
+00078                         ctor Null);
+00079                 GLM_FUNC_DECL explicit tmat3x4(
+00080                         value_type const & s);
+00081                 GLM_FUNC_DECL explicit tmat3x4(
+00082                         value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
+00083                         value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1,
+00084                         value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2);
+00085                 GLM_FUNC_DECL explicit tmat3x4(
+00086                         col_type const & v0, 
+00087                         col_type const & v1,
+00088                         col_type const & v2);
+00089 
+00091                 // Conversions
+00092                 template <typename U> 
+00093                 GLM_FUNC_DECL explicit tmat3x4(
+00094             U const & x);
+00095                         
+00096                 template 
+00097         <
+00098             typename X1, typename Y1, typename Z1, typename W1, 
+00099             typename X2, typename Y2, typename Z2, typename W2, 
+00100             typename X3, typename Y3, typename Z3, typename W3 
+00101         > 
+00102                 GLM_FUNC_DECL explicit tmat3x4(
+00103             X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, 
+00104             X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, 
+00105             X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3);
+00106                         
+00107                 template <typename V1, typename V2, typename V3> 
+00108                 GLM_FUNC_DECL explicit tmat3x4(
+00109             tvec4<V1> const & v1, 
+00110             tvec4<V2> const & v2,
+00111             tvec4<V3> const & v3);
+00112             
+00113                 // Matrix conversion
+00114                 template <typename U> 
+00115                 GLM_FUNC_DECL explicit tmat3x4(tmat3x4<U> const & m);
+00116 
+00117                 GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T> const & x);
+00118                 GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T> const & x);
+00119                 GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T> const & x);
+00120                 GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T> const & x);
+00121                 GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T> const & x);
+00122                 GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T> const & x);
+00123                 GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T> const & x);
+00124                 GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T> const & x);
+00125 
+00126                 // Accesses
+00127                 col_type & operator[](size_type i);
+00128                 col_type const & operator[](size_type i) const;
+00129 
+00130                 // Unary updatable operators
+00131                 GLM_FUNC_DECL tmat3x4<T> & operator=  (tmat3x4<T> const & m);
+00132                 template <typename U> 
+00133                 GLM_FUNC_DECL tmat3x4<T> & operator=  (tmat3x4<U> const & m);
+00134                 template <typename U> 
+00135                 GLM_FUNC_DECL tmat3x4<T> & operator+= (U const & s);
+00136                 template <typename U> 
+00137                 GLM_FUNC_DECL tmat3x4<T> & operator+= (tmat3x4<U> const & m);
+00138                 template <typename U> 
+00139                 GLM_FUNC_DECL tmat3x4<T> & operator-= (U const & s);
+00140                 template <typename U> 
+00141                 GLM_FUNC_DECL tmat3x4<T> & operator-= (tmat3x4<U> const & m);
+00142                 template <typename U> 
+00143                 GLM_FUNC_DECL tmat3x4<T> & operator*= (U const & s);
+00144                 template <typename U> 
+00145                 GLM_FUNC_DECL tmat3x4<T> & operator*= (tmat3x4<U> const & m);
+00146                 template <typename U> 
+00147                 GLM_FUNC_DECL tmat3x4<T> & operator/= (U const & s);
+00148 
+00149                 GLM_FUNC_DECL tmat3x4<T> & operator++ ();
+00150                 GLM_FUNC_DECL tmat3x4<T> & operator-- ();
+00151         };
+00152 
+00153         // Binary operators
+00154         template <typename T> 
+00155         tmat3x4<T> operator+ (
+00156                 tmat3x4<T> const & m, 
+00157                 typename tmat3x4<T>::value_type const & s);
+00158             
+00159         template <typename T> 
+00160         tmat3x4<T> operator+ (
+00161                 tmat3x4<T> const & m1, 
+00162                 tmat3x4<T> const & m2);
+00163             
+00164         template <typename T> 
+00165         tmat3x4<T> operator- (
+00166                 tmat3x4<T> const & m, 
+00167                 typename tmat3x4<T>::value_type const & s);
+00168 
+00169         template <typename T> 
+00170         tmat3x4<T> operator- (
+00171                 tmat3x4<T> const & m1, 
+00172                 tmat3x4<T> const & m2);
+00173 
+00174         template <typename T> 
+00175         tmat3x4<T> operator* (
+00176                 tmat3x4<T> const & m, 
+00177                 typename tmat3x4<T>::value_type const & s);
+00178 
+00179         template <typename T> 
+00180         tmat3x4<T> operator* (
+00181                 typename tmat3x4<T>::value_type const & s, 
+00182                 tmat3x4<T> const & m);
+00183 
+00184         template <typename T>
+00185         typename tmat3x4<T>::col_type operator* (
+00186                 tmat3x4<T> const & m, 
+00187                 typename tmat3x4<T>::row_type const & v);
+00188 
+00189         template <typename T> 
+00190         typename tmat3x4<T>::row_type operator* (
+00191                 typename tmat3x4<T>::col_type const & v, 
+00192                 tmat3x4<T> const & m);
+00193 
+00194         template <typename T>
+00195         tmat4x4<T> operator* (
+00196                 tmat3x4<T> const & m1, 
+00197                 tmat4x3<T> const & m2);
+00198                 
+00199         template <typename T>
+00200         tmat2x4<T> operator* (
+00201                 tmat3x4<T> const & m1, 
+00202                 tmat2x3<T> const & m2);
+00203                 
+00204         template <typename T>
+00205         tmat3x4<T> operator* (
+00206                 tmat3x4<T> const & m1, 
+00207                 tmat3x3<T> const & m2);
+00208 
+00209         template <typename T> 
+00210         tmat3x4<T> operator/ (
+00211                 tmat3x4<T> const & m, 
+00212                 typename tmat3x4<T>::value_type const & s);
+00213 
+00214         template <typename T> 
+00215         tmat3x4<T> operator/ (
+00216                 typename tmat3x4<T>::value_type const & s, 
+00217                 tmat3x4<T> const & m);
+00218 
+00219         // Unary constant operators
+00220         template <typename T> 
+00221         tmat3x4<T> const operator-  (
+00222                 tmat3x4<T> const & m);
+00223 
+00224         template <typename T> 
+00225         tmat3x4<T> const operator-- (
+00226                 tmat3x4<T> const & m, 
+00227                 int);
+00228 
+00229         template <typename T> 
+00230         tmat3x4<T> const operator++ (
+00231                 tmat3x4<T> const & m, 
+00232                 int);
+00233 
+00234 }//namespace detail
+00235 
+00239         typedef detail::tmat3x4<lowp_float>             lowp_mat3x4;
+00243         typedef detail::tmat3x4<mediump_float>  mediump_mat3x4;
+00247         typedef detail::tmat3x4<highp_float>    highp_mat3x4;
+00248 
+00249 }//namespace glm
+00250 
+00251 #ifndef GLM_EXTERNAL_TEMPLATE
+00252 #include "type_mat3x4.inl"
+00253 #endif
+00254 
+00255 #endif //glm_core_type_mat3x4
+
+
+ + + diff --git a/doc/api-0.9.3/a00119.html b/doc/api-0.9.3/a00119.html new file mode 100644 index 00000000..fee9d197 --- /dev/null +++ b/doc/api-0.9.3/a00119.html @@ -0,0 +1,78 @@ + + + + +type_mat4x2.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat4x2.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  tmat4x2< T >
 Template for 4 columns and 2 rows matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat4x2
+< highp_float > 
highp_mat4x2
typedef detail::tmat4x2
+< lowp_float > 
lowp_mat4x2
typedef detail::tmat4x2
+< mediump_float > 
mediump_mat4x2
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-10-01 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat4x2.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00119_source.html b/doc/api-0.9.3/a00119_source.html new file mode 100644 index 00000000..3e2e8b62 --- /dev/null +++ b/doc/api-0.9.3/a00119_source.html @@ -0,0 +1,296 @@ + + + + +type_mat4x2.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat4x2.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat4x2
+00030 #define glm_core_type_mat4x2
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat4x2
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec2<T> col_type;
+00060                 typedef tvec4<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat4x2<T> type;
+00066                 typedef tmat2x4<T> transpose_type;
+00067 
+00068         private:
+00069                 // Data 
+00070                 col_type value[4];
+00071 
+00072         public:
+00073                 // Constructors
+00074                 GLM_FUNC_DECL tmat4x2();
+00075                 GLM_FUNC_DECL tmat4x2(tmat4x2 const & m);
+00076 
+00077                 GLM_FUNC_DECL explicit tmat4x2(
+00078                         ctor Null);
+00079                 GLM_FUNC_DECL explicit tmat4x2(
+00080                         value_type const & x);
+00081                 GLM_FUNC_DECL explicit tmat4x2(
+00082                         value_type const & x0, value_type const & y0,
+00083                         value_type const & x1, value_type const & y1,
+00084                         value_type const & x2, value_type const & y2,
+00085                         value_type const & x3, value_type const & y3);
+00086                 GLM_FUNC_DECL explicit tmat4x2(
+00087                         col_type const & v0, 
+00088                         col_type const & v1,
+00089                         col_type const & v2,
+00090                         col_type const & v3);
+00091             
+00093                 // Conversions
+00094                 template <typename U> 
+00095                 GLM_FUNC_DECL explicit tmat4x2(
+00096             U const & x);
+00097                         
+00098                 template 
+00099         <
+00100             typename X1, typename Y1, 
+00101             typename X2, typename Y2, 
+00102             typename X3, typename Y3,
+00103             typename X4, typename Y4
+00104         > 
+00105                 GLM_FUNC_DECL explicit tmat4x2(
+00106             X1 const & x1, Y1 const & y1, 
+00107             X2 const & x2, Y2 const & y2,
+00108             X3 const & x3, Y3 const & y3,
+00109             X4 const & x4, Y4 const & y4);
+00110                         
+00111                 template <typename V1, typename V2, typename V3, typename V4> 
+00112                 GLM_FUNC_DECL explicit tmat4x2(
+00113             tvec2<V1> const & v1, 
+00114             tvec2<V2> const & v2,
+00115             tvec2<V3> const & v3,
+00116             tvec2<V4> const & v4);
+00117             
+00118                 // Matrix conversions
+00119                 template <typename U> 
+00120                 GLM_FUNC_DECL explicit tmat4x2(tmat4x2<U> const & m);
+00121                         
+00122                 GLM_FUNC_DECL explicit tmat4x2(tmat2x2<T> const & x);
+00123                 GLM_FUNC_DECL explicit tmat4x2(tmat3x3<T> const & x);
+00124                 GLM_FUNC_DECL explicit tmat4x2(tmat4x4<T> const & x);
+00125                 GLM_FUNC_DECL explicit tmat4x2(tmat2x3<T> const & x);
+00126                 GLM_FUNC_DECL explicit tmat4x2(tmat3x2<T> const & x);
+00127                 GLM_FUNC_DECL explicit tmat4x2(tmat2x4<T> const & x);
+00128                 GLM_FUNC_DECL explicit tmat4x2(tmat4x3<T> const & x);
+00129                 GLM_FUNC_DECL explicit tmat4x2(tmat3x4<T> const & x);
+00130 
+00131                 // Accesses
+00132                 GLM_FUNC_DECL col_type & operator[](size_type i);
+00133                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+00134 
+00135                 // Unary updatable operators
+00136                 GLM_FUNC_DECL tmat4x2<T>& operator=  (tmat4x2<T> const & m);
+00137                 template <typename U> 
+00138                 GLM_FUNC_DECL tmat4x2<T>& operator=  (tmat4x2<U> const & m);
+00139                 template <typename U> 
+00140                 GLM_FUNC_DECL tmat4x2<T>& operator+= (U const & s);
+00141                 template <typename U> 
+00142                 GLM_FUNC_DECL tmat4x2<T>& operator+= (tmat4x2<U> const & m);
+00143                 template <typename U> 
+00144                 GLM_FUNC_DECL tmat4x2<T>& operator-= (U const & s);
+00145                 template <typename U> 
+00146                 GLM_FUNC_DECL tmat4x2<T>& operator-= (tmat4x2<U> const & m);
+00147                 template <typename U> 
+00148                 GLM_FUNC_DECL tmat4x2<T>& operator*= (U const & s);
+00149                 template <typename U> 
+00150                 GLM_FUNC_DECL tmat4x2<T>& operator*= (tmat4x2<U> const & m);
+00151                 template <typename U> 
+00152                 GLM_FUNC_DECL tmat4x2<T>& operator/= (U const & s);
+00153 
+00154                 GLM_FUNC_DECL tmat4x2<T>& operator++ ();
+00155                 GLM_FUNC_DECL tmat4x2<T>& operator-- ();
+00156         };
+00157 
+00158         // Binary operators
+00159         template <typename T> 
+00160         tmat4x2<T> operator+ (
+00161                 tmat4x2<T> const & m, 
+00162                 typename tmat4x2<T>::value_type const & s);
+00163             
+00164         template <typename T> 
+00165         tmat4x2<T> operator+ (
+00166                 tmat4x2<T> const & m1, 
+00167                 tmat4x2<T> const & m2);
+00168             
+00169         template <typename T> 
+00170         tmat4x2<T> operator- (
+00171                 tmat4x2<T> const & m, 
+00172                 typename tmat4x2<T>::value_type const & s);
+00173 
+00174         template <typename T> 
+00175         tmat4x2<T> operator- (
+00176                 tmat4x2<T> const & m1, 
+00177                 tmat4x2<T> const & m2);
+00178 
+00179         template <typename T> 
+00180         tmat4x2<T> operator* (
+00181                 tmat4x2<T> const & m, 
+00182                 typename tmat4x2<T>::value_type const & s);
+00183 
+00184         template <typename T> 
+00185         tmat4x2<T> operator* (
+00186                 typename tmat4x2<T>::value_type const & s, 
+00187                 tmat4x2<T> const & m);
+00188 
+00189         template <typename T>
+00190         typename tmat4x2<T>::col_type operator* (
+00191                 tmat4x2<T> const & m, 
+00192                 typename tmat4x2<T>::row_type const & v);
+00193 
+00194         template <typename T> 
+00195         typename tmat4x2<T>::row_type operator* (
+00196                 typename tmat4x2<T>::col_type const & v, 
+00197                 tmat4x2<T> const & m);
+00198 
+00199         template <typename T>
+00200         tmat3x2<T> operator* (
+00201                 tmat4x2<T> const & m1, 
+00202                 tmat3x4<T> const & m2);
+00203                 
+00204         template <typename T>
+00205         tmat4x2<T> operator* (
+00206                 tmat4x2<T> const & m1, 
+00207                 tmat4x4<T> const & m2);
+00208                 
+00209         template <typename T>
+00210         tmat2x3<T> operator* (
+00211                 tmat4x3<T> const & m1, 
+00212                 tmat2x4<T> const & m2);
+00213 
+00214         template <typename T> 
+00215         tmat4x2<T> operator/ (
+00216                 tmat4x2<T> const & m, 
+00217                 typename tmat4x2<T>::value_type const & s);
+00218 
+00219         template <typename T> 
+00220         tmat4x2<T> operator/ (
+00221                 typename tmat4x2<T>::value_type const & s, 
+00222                 tmat4x2<T> const & m);
+00223 
+00224         // Unary constant operators
+00225         template <typename T> 
+00226         tmat4x2<T> const operator-  (
+00227                 tmat4x2<T> const & m);
+00228 
+00229         template <typename T> 
+00230         tmat4x2<T> const operator-- (
+00231                 tmat4x2<T> const & m, 
+00232                 int);
+00233 
+00234         template <typename T> 
+00235         tmat4x2<T> const operator++ (
+00236                 tmat4x2<T> const & m, 
+00237                 int);
+00238 
+00239 } //namespace detail
+00240 
+00245         typedef detail::tmat4x2<lowp_float>             lowp_mat4x2;
+00246 
+00251         typedef detail::tmat4x2<mediump_float>  mediump_mat4x2;
+00252 
+00257         typedef detail::tmat4x2<highp_float>    highp_mat4x2;
+00258 
+00259 }//namespace glm
+00260 
+00261 #ifndef GLM_EXTERNAL_TEMPLATE
+00262 #include "type_mat4x2.inl"
+00263 #endif
+00264 
+00265 #endif //glm_core_type_mat4x2
+
+
+ + + diff --git a/doc/api-0.9.3/a00120.html b/doc/api-0.9.3/a00120.html new file mode 100644 index 00000000..e7b52f94 --- /dev/null +++ b/doc/api-0.9.3/a00120.html @@ -0,0 +1,78 @@ + + + + +type_mat4x3.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat4x3.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  tmat4x3< T >
 Template for 4 columns and 3 rows matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat4x3
+< highp_float > 
highp_mat4x3
typedef detail::tmat4x3
+< lowp_float > 
lowp_mat4x3
typedef detail::tmat4x3
+< mediump_float > 
mediump_mat4x3
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2006-08-04 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat4x3.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00120_source.html b/doc/api-0.9.3/a00120_source.html new file mode 100644 index 00000000..63eb1fd2 --- /dev/null +++ b/doc/api-0.9.3/a00120_source.html @@ -0,0 +1,294 @@ + + + + +type_mat4x3.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat4x3.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat4x3
+00030 #define glm_core_type_mat4x3
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat4x3
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec3<T> col_type;
+00060                 typedef tvec4<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat4x3<T> type;
+00066                 typedef tmat3x4<T> transpose_type;
+00067 
+00068         private:
+00069                 // Data 
+00070                 col_type value[4];
+00071 
+00072         public:
+00073                 // Constructors
+00074                 GLM_FUNC_DECL tmat4x3();
+00075                 GLM_FUNC_DECL tmat4x3(tmat4x3 const & m);
+00076 
+00077                 GLM_FUNC_DECL explicit tmat4x3(
+00078                         ctor Null);
+00079                 GLM_FUNC_DECL explicit tmat4x3(
+00080                         value_type const & x);
+00081                 GLM_FUNC_DECL explicit tmat4x3(
+00082                         value_type const & x0, value_type const & y0, value_type const & z0,
+00083                         value_type const & x1, value_type const & y1, value_type const & z1,
+00084                         value_type const & x2, value_type const & y2, value_type const & z2,
+00085                         value_type const & x3, value_type const & y3, value_type const & z3);
+00086                 GLM_FUNC_DECL explicit tmat4x3(
+00087                         col_type const & v0, 
+00088                         col_type const & v1,
+00089                         col_type const & v2,
+00090             col_type const & v3);
+00091             
+00093                 // Conversions
+00094                 template <typename U> 
+00095                 GLM_FUNC_DECL explicit tmat4x3(
+00096             U const & x);
+00097                         
+00098                 template <
+00099             typename X1, typename Y1, typename Z1, 
+00100             typename X2, typename Y2, typename Z2, 
+00101             typename X3, typename Y3, typename Z3, 
+00102             typename X4, typename Y4, typename Z4> 
+00103                 GLM_FUNC_DECL explicit tmat4x3(
+00104             X1 const & x1, Y1 const & y1, Z1 const & z1, 
+00105             X2 const & x2, Y2 const & y2, Z2 const & z2, 
+00106             X3 const & x3, Y3 const & y3, Z3 const & z3, 
+00107             X4 const & x4, Y4 const & y4, Z4 const & z4);
+00108                         
+00109                 template <typename V1, typename V2, typename V3, typename V4> 
+00110                 GLM_FUNC_DECL explicit tmat4x3(
+00111             tvec3<V1> const & v1, 
+00112             tvec3<V2> const & v2,
+00113             tvec3<V3> const & v3,
+00114             tvec3<V4> const & v4);
+00115             
+00116                 // Matrix conversions
+00117                 template <typename U> 
+00118                 GLM_FUNC_DECL explicit tmat4x3(tmat4x3<U> const & m);
+00119                         
+00120                 GLM_FUNC_DECL explicit tmat4x3(tmat2x2<T> const & x);
+00121                 GLM_FUNC_DECL explicit tmat4x3(tmat3x3<T> const & x);
+00122                 GLM_FUNC_DECL explicit tmat4x3(tmat4x4<T> const & x);
+00123                 GLM_FUNC_DECL explicit tmat4x3(tmat2x3<T> const & x);
+00124                 GLM_FUNC_DECL explicit tmat4x3(tmat3x2<T> const & x);
+00125                 GLM_FUNC_DECL explicit tmat4x3(tmat2x4<T> const & x);
+00126                 GLM_FUNC_DECL explicit tmat4x3(tmat4x2<T> const & x);
+00127                 GLM_FUNC_DECL explicit tmat4x3(tmat3x4<T> const & x);
+00128 
+00129                 // Accesses
+00130                 col_type & operator[](size_type i);
+00131                 col_type const & operator[](size_type i) const;
+00132 
+00133                 // Unary updatable operators
+00134                 GLM_FUNC_DECL tmat4x3<T> & operator=  (tmat4x3<T> const & m);
+00135                 template <typename U> 
+00136                 GLM_FUNC_DECL tmat4x3<T> & operator=  (tmat4x3<U> const & m);
+00137                 template <typename U> 
+00138                 GLM_FUNC_DECL tmat4x3<T> & operator+= (U const & s);
+00139                 template <typename U> 
+00140                 GLM_FUNC_DECL tmat4x3<T> & operator+= (tmat4x3<U> const & m);
+00141                 template <typename U> 
+00142                 GLM_FUNC_DECL tmat4x3<T> & operator-= (U const & s);
+00143                 template <typename U> 
+00144                 GLM_FUNC_DECL tmat4x3<T> & operator-= (tmat4x3<U> const & m);
+00145                 template <typename U> 
+00146                 GLM_FUNC_DECL tmat4x3<T> & operator*= (U const & s);
+00147                 template <typename U> 
+00148                 GLM_FUNC_DECL tmat4x3<T> & operator*= (tmat4x3<U> const & m);
+00149                 template <typename U> 
+00150                 GLM_FUNC_DECL tmat4x3<T> & operator/= (U const & s);
+00151 
+00152                 GLM_FUNC_DECL tmat4x3<T> & operator++ ();
+00153                 GLM_FUNC_DECL tmat4x3<T> & operator-- ();
+00154         };
+00155 
+00156         // Binary operators
+00157         template <typename T> 
+00158         tmat4x3<T> operator+ (
+00159                 tmat4x3<T> const & m, 
+00160                 typename tmat4x3<T>::value_type const & s);
+00161             
+00162         template <typename T> 
+00163         tmat4x3<T> operator+ (
+00164                 tmat4x3<T> const & m1, 
+00165                 tmat4x3<T> const & m2);
+00166             
+00167         template <typename T> 
+00168         tmat4x3<T> operator- (
+00169                 tmat4x3<T> const & m, 
+00170                 typename tmat4x3<T>::value_type const & s);
+00171 
+00172         template <typename T> 
+00173         tmat4x3<T> operator- (
+00174                 tmat4x3<T> const & m1, 
+00175                 tmat4x3<T> const & m2);
+00176 
+00177         template <typename T> 
+00178         tmat4x3<T> operator* (
+00179                 tmat4x3<T> const & m, 
+00180                 typename tmat4x3<T>::value_type const & s);
+00181 
+00182         template <typename T> 
+00183         tmat4x3<T> operator* (
+00184                 typename tmat4x3<T>::value_type const & s, 
+00185                 tmat4x3<T> const & m);
+00186 
+00187         template <typename T>
+00188         typename tmat4x3<T>::col_type operator* (
+00189                 tmat4x3<T> const & m, 
+00190                 typename tmat4x3<T>::row_type const & v);
+00191 
+00192         template <typename T> 
+00193         typename tmat4x3<T>::row_type operator* (
+00194                 typename tmat4x3<T>::col_type const & v, 
+00195                 tmat4x3<T> const & m);
+00196 
+00197         template <typename T> 
+00198         tmat2x3<T> operator* (
+00199                 tmat4x3<T> const & m1, 
+00200                 tmat2x4<T> const & m2);
+00201 
+00202         template <typename T> 
+00203         tmat3x3<T> operator* (
+00204                 tmat4x3<T> const & m1, 
+00205                 tmat3x4<T> const & m2);
+00206                 
+00207         template <typename T>
+00208         tmat4x3<T> operator* (
+00209                 tmat4x3<T> const & m1, 
+00210                 tmat4x4<T> const & m2);
+00211 
+00212         template <typename T> 
+00213         tmat4x3<T> operator/ (
+00214                 tmat4x3<T> const & m, 
+00215                 typename tmat4x3<T>::value_type const & s);
+00216 
+00217         template <typename T> 
+00218         tmat4x3<T> operator/ (
+00219                 typename tmat4x3<T>::value_type const & s, 
+00220                 tmat4x3<T> const & m);
+00221 
+00222         // Unary constant operators
+00223         template <typename T> 
+00224         tmat4x3<T> const operator- (
+00225                 tmat4x3<T> const & m);
+00226 
+00227         template <typename T> 
+00228         tmat4x3<T> const operator-- (
+00229                 tmat4x3<T> const & m, 
+00230                 int);
+00231 
+00232         template <typename T> 
+00233         tmat4x3<T> const operator++ (
+00234                 tmat4x3<T> const & m, 
+00235                 int);
+00236 
+00237 }//namespace detail
+00238 
+00243         typedef detail::tmat4x3<lowp_float>             lowp_mat4x3;
+00244 
+00249         typedef detail::tmat4x3<mediump_float>  mediump_mat4x3;
+00250 
+00255         typedef detail::tmat4x3<highp_float>    highp_mat4x3;
+00256 
+00257 }//namespace glm
+00258 
+00259 #ifndef GLM_EXTERNAL_TEMPLATE
+00260 #include "type_mat4x3.inl"
+00261 #endif //GLM_EXTERNAL_TEMPLATE
+00262 
+00263 #endif//glm_core_type_mat4x3
+
+
+ + + diff --git a/doc/api-0.9.3/a00121.html b/doc/api-0.9.3/a00121.html new file mode 100644 index 00000000..bf50641f --- /dev/null +++ b/doc/api-0.9.3/a00121.html @@ -0,0 +1,84 @@ + + + + +type_mat4x4.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_mat4x4.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

struct  tmat4x4< T >
 Template for 4 * 4 matrix of floating-point numbers. More...

+Typedefs

typedef detail::tmat4x4
+< highp_float > 
highp_mat4
typedef detail::tmat4x4
+< highp_float > 
highp_mat4x4
typedef detail::tmat4x4
+< lowp_float > 
lowp_mat4
typedef detail::tmat4x4
+< lowp_float > 
lowp_mat4x4
typedef detail::tmat4x4
+< mediump_float > 
mediump_mat4
typedef detail::tmat4x4
+< mediump_float > 
mediump_mat4x4
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2005-01-27 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_mat4x4.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00121_source.html b/doc/api-0.9.3/a00121_source.html new file mode 100644 index 00000000..79bbef2d --- /dev/null +++ b/doc/api-0.9.3/a00121_source.html @@ -0,0 +1,328 @@ + + + + +type_mat4x4.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_mat4x4.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_mat4x4
+00030 #define glm_core_type_mat4x4
+00031 
+00032 #include "type_mat.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         template <typename T> struct tvec1;
+00038         template <typename T> struct tvec2;
+00039         template <typename T> struct tvec3;
+00040         template <typename T> struct tvec4;
+00041         template <typename T> struct tmat2x2;
+00042         template <typename T> struct tmat2x3;
+00043         template <typename T> struct tmat2x4;
+00044         template <typename T> struct tmat3x2;
+00045         template <typename T> struct tmat3x3;
+00046         template <typename T> struct tmat3x4;
+00047         template <typename T> struct tmat4x2;
+00048         template <typename T> struct tmat4x3;
+00049         template <typename T> struct tmat4x4;
+00050 
+00053         template <typename T> 
+00054         struct tmat4x4
+00055         {
+00056                 enum ctor{null};
+00057                 typedef T value_type;
+00058                 typedef std::size_t size_type;
+00059                 typedef tvec4<T> col_type;
+00060                 typedef tvec4<T> row_type;
+00061         GLM_FUNC_DECL size_type length() const;
+00062                 static GLM_FUNC_DECL size_type col_size();
+00063                 static GLM_FUNC_DECL size_type row_size();
+00064 
+00065                 typedef tmat4x4<T> type;
+00066                 typedef tmat4x4<T> transpose_type;
+00067 
+00068         public:
+00069                 // Implementation detail
+00070                 GLM_FUNC_DECL tmat4x4<T> _inverse() const;
+00071 
+00072         private:
+00073                 // Data 
+00074                 col_type value[4];
+00075 
+00076         public:
+00077                 // Constructors
+00078                 GLM_FUNC_DECL tmat4x4();
+00079                 GLM_FUNC_DECL tmat4x4(tmat4x4 const & m);
+00080 
+00081                 GLM_FUNC_DECL explicit tmat4x4(
+00082                         ctor Null);
+00083                 GLM_FUNC_DECL explicit tmat4x4(
+00084                         value_type const & x);
+00085                 GLM_FUNC_DECL explicit tmat4x4(
+00086                         value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
+00087                         value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1,
+00088                         value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2,
+00089                         value_type const & x3, value_type const & y3, value_type const & z3, value_type const & w3);
+00090                 GLM_FUNC_DECL explicit tmat4x4(
+00091                         col_type const & v0, 
+00092                         col_type const & v1,
+00093                         col_type const & v2,
+00094                         col_type const & v3);
+00095 
+00097                 // Conversions
+00098                 template <typename U> 
+00099                 GLM_FUNC_DECL explicit tmat4x4(
+00100             U const & x);
+00101                         
+00102                 template <
+00103             typename X1, typename Y1, typename Z1, typename W1, 
+00104             typename X2, typename Y2, typename Z2, typename W2, 
+00105             typename X3, typename Y3, typename Z3, typename W3, 
+00106             typename X4, typename Y4, typename Z4, typename W4> 
+00107                 GLM_FUNC_DECL explicit tmat4x4(
+00108             X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, 
+00109             X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, 
+00110             X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3, 
+00111             X4 const & x4, Y4 const & y4, Z4 const & z4, W4 const & w4);
+00112                         
+00113                 template <typename V1, typename V2, typename V3, typename V4> 
+00114                 GLM_FUNC_DECL explicit tmat4x4(
+00115             tvec4<V1> const & v1, 
+00116             tvec4<V2> const & v2,
+00117             tvec4<V3> const & v3,
+00118             tvec4<V4> const & v4);
+00119             
+00120                 // Matrix conversions
+00121                 template <typename U> 
+00122                 GLM_FUNC_DECL explicit tmat4x4(tmat4x4<U> const & m);
+00123 
+00124                 GLM_FUNC_DECL explicit tmat4x4(tmat2x2<T> const & x);
+00125                 GLM_FUNC_DECL explicit tmat4x4(tmat3x3<T> const & x);
+00126                 GLM_FUNC_DECL explicit tmat4x4(tmat2x3<T> const & x);
+00127                 GLM_FUNC_DECL explicit tmat4x4(tmat3x2<T> const & x);
+00128                 GLM_FUNC_DECL explicit tmat4x4(tmat2x4<T> const & x);
+00129                 GLM_FUNC_DECL explicit tmat4x4(tmat4x2<T> const & x);
+00130                 GLM_FUNC_DECL explicit tmat4x4(tmat3x4<T> const & x);
+00131                 GLM_FUNC_DECL explicit tmat4x4(tmat4x3<T> const & x);
+00132 
+00133                 // Accesses
+00134                 GLM_FUNC_DECL col_type & operator[](size_type i);
+00135                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+00136 
+00137                 // Unary updatable operators
+00138                 GLM_FUNC_DECL tmat4x4<T> & operator=  (tmat4x4<T> const & m);
+00139                 template <typename U>
+00140                 GLM_FUNC_DECL tmat4x4<T> & operator=  (tmat4x4<U> const & m);
+00141                 template <typename U>
+00142                 GLM_FUNC_DECL tmat4x4<T> & operator+= (U const & s);
+00143                 template <typename U>
+00144                 GLM_FUNC_DECL tmat4x4<T> & operator+= (tmat4x4<U> const & m);
+00145                 template <typename U>
+00146                 GLM_FUNC_DECL tmat4x4<T> & operator-= (U const & s);
+00147                 template <typename U>
+00148                 GLM_FUNC_DECL tmat4x4<T> & operator-= (tmat4x4<U> const & m);
+00149                 template <typename U>
+00150                 GLM_FUNC_DECL tmat4x4<T> & operator*= (U const & s);
+00151                 template <typename U>
+00152                 GLM_FUNC_DECL tmat4x4<T> & operator*= (tmat4x4<U> const & m);
+00153                 template <typename U>
+00154                 GLM_FUNC_DECL tmat4x4<T> & operator/= (U const & s);
+00155                 template <typename U>
+00156                 GLM_FUNC_DECL tmat4x4<T> & operator/= (tmat4x4<U> const & m);
+00157                 GLM_FUNC_DECL tmat4x4<T> & operator++ ();
+00158                 GLM_FUNC_DECL tmat4x4<T> & operator-- ();
+00159         };
+00160 
+00161         // Binary operators
+00162         template <typename T> 
+00163         tmat4x4<T> operator+ (
+00164                 tmat4x4<T> const & m, 
+00165                 typename tmat4x4<T>::value_type const & s);
+00166 
+00167         template <typename T> 
+00168         tmat4x4<T> operator+ (
+00169                 typename tmat4x4<T>::value_type const & s, 
+00170                 tmat4x4<T> const & m);
+00171 
+00172         template <typename T> 
+00173         tmat4x4<T> operator+ (
+00174                 tmat4x4<T> const & m1, 
+00175                 tmat4x4<T> const & m2);
+00176             
+00177         template <typename T> 
+00178         tmat4x4<T> operator- (
+00179                 tmat4x4<T> const & m, 
+00180                 typename tmat4x4<T>::value_type const & s);
+00181 
+00182         template <typename T> 
+00183         tmat4x4<T> operator- (
+00184                 typename tmat4x4<T>::value_type const & s, 
+00185                 tmat4x4<T> const & m);
+00186 
+00187         template <typename T> 
+00188         tmat4x4<T> operator- (
+00189                 tmat4x4<T> const & m1, 
+00190                 tmat4x4<T> const & m2);
+00191 
+00192         template <typename T> 
+00193         tmat4x4<T> operator* (
+00194                 tmat4x4<T> const & m, 
+00195                 typename tmat4x4<T>::value_type const & s);
+00196 
+00197         template <typename T> 
+00198         tmat4x4<T> operator* (
+00199                 typename tmat4x4<T>::value_type const & s, 
+00200                 tmat4x4<T> const & m);
+00201 
+00202         template <typename T> 
+00203         typename tmat4x4<T>::col_type operator* (
+00204                 tmat4x4<T> const & m, 
+00205                 typename tmat4x4<T>::row_type const & v);
+00206 
+00207         template <typename T> 
+00208         typename tmat4x4<T>::row_type operator* (
+00209                 typename tmat4x4<T>::col_type const & v, 
+00210                 tmat4x4<T> const & m);
+00211                 
+00212         template <typename T>
+00213         tmat2x4<T> operator* (
+00214                 tmat4x4<T> const & m1, 
+00215                 tmat2x4<T> const & m2);
+00216 
+00217         template <typename T>
+00218         tmat3x4<T> operator* (
+00219                 tmat4x4<T> const & m1, 
+00220                 tmat3x4<T> const & m2);
+00221 
+00222         template <typename T> 
+00223         tmat4x4<T> operator* (
+00224                 tmat4x4<T> const & m1, 
+00225                 tmat4x4<T> const & m2);
+00226 
+00227         template <typename T> 
+00228         tmat4x4<T> operator/ (
+00229                 tmat4x4<T> const & m, 
+00230                 typename tmat4x4<T>::value_type const & s);
+00231 
+00232         template <typename T> 
+00233         tmat4x4<T> operator/ (
+00234                 typename tmat4x4<T>::value_type const & s, 
+00235                 tmat4x4<T> const & m);
+00236 
+00237         template <typename T> 
+00238         typename tmat4x4<T>::col_type operator/ (
+00239                 tmat4x4<T> const & m, 
+00240                 typename tmat4x4<T>::row_type const & v);
+00241 
+00242         template <typename T> 
+00243         typename tmat4x4<T>::row_type operator/ (
+00244                 typename tmat4x4<T>::col_type & v, 
+00245                 tmat4x4<T> const & m);
+00246 
+00247         template <typename T> 
+00248         tmat4x4<T> operator/ (
+00249                 tmat4x4<T> const & m1, 
+00250                 tmat4x4<T> const & m2);
+00251 
+00252         // Unary constant operators
+00253         template <typename T> 
+00254         tmat4x4<T> const operator-  (
+00255                 tmat4x4<T> const & m);
+00256 
+00257         template <typename T> 
+00258         tmat4x4<T> const operator-- (
+00259                 tmat4x4<T> const & m, int);
+00260 
+00261         template <typename T> 
+00262         tmat4x4<T> const operator++ (
+00263                 tmat4x4<T> const & m, int);
+00264 
+00265 } //namespace detail
+00266 
+00271         typedef detail::tmat4x4<lowp_float>             lowp_mat4;
+00272 
+00277         typedef detail::tmat4x4<mediump_float>  mediump_mat4;
+00278 
+00283         typedef detail::tmat4x4<highp_float>    highp_mat4;
+00284 
+00289         typedef detail::tmat4x4<lowp_float>             lowp_mat4x4;
+00290 
+00295         typedef detail::tmat4x4<mediump_float>  mediump_mat4x4;
+00296 
+00301         typedef detail::tmat4x4<highp_float>    highp_mat4x4;
+00302 
+00303 }//namespace glm
+00304 
+00305 #ifndef GLM_EXTERNAL_TEMPLATE
+00306 #include "type_mat4x4.inl"
+00307 #endif//GLM_EXTERNAL_TEMPLATE
+00308 
+00309 #endif//glm_core_type_mat4x4
+
+
+ + + diff --git a/doc/api-0.9.3/a00122.html b/doc/api-0.9.3/a00122.html new file mode 100644 index 00000000..425c1342 --- /dev/null +++ b/doc/api-0.9.3/a00122.html @@ -0,0 +1,312 @@ + + + + +type_precision.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_precision.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef float16 f16
+typedef detail::tmat2x2< f16 > f16mat2
+typedef detail::tmat2x2< f16 > f16mat2x2
+typedef detail::tmat2x3< f16 > f16mat2x3
+typedef detail::tmat2x4< f16 > f16mat2x4
+typedef detail::tmat3x3< f16 > f16mat3
+typedef detail::tmat3x2< f16 > f16mat3x2
+typedef detail::tmat3x3< f16 > f16mat3x3
+typedef detail::tmat3x4< f16 > f16mat3x4
+typedef detail::tmat4x4< f16 > f16mat4
+typedef detail::tmat4x2< f16 > f16mat4x2
+typedef detail::tmat4x3< f16 > f16mat4x3
+typedef detail::tmat4x4< f16 > f16mat4x4
+typedef detail::tquat< f16 > f16quat
+typedef detail::tvec1< f16 > f16vec1
+typedef detail::tvec2< f16 > f16vec2
+typedef detail::tvec3< f16 > f16vec3
+typedef detail::tvec4< f16 > f16vec4
+typedef float32 f32
+typedef detail::tmat2x2< f32 > f32mat2
+typedef detail::tmat2x2< f32 > f32mat2x2
+typedef detail::tmat2x3< f32 > f32mat2x3
+typedef detail::tmat2x4< f32 > f32mat2x4
+typedef detail::tmat3x3< f32 > f32mat3
+typedef detail::tmat3x2< f32 > f32mat3x2
+typedef detail::tmat3x3< f32 > f32mat3x3
+typedef detail::tmat3x4< f32 > f32mat3x4
+typedef detail::tmat4x4< f32 > f32mat4
+typedef detail::tmat4x2< f32 > f32mat4x2
+typedef detail::tmat4x3< f32 > f32mat4x3
+typedef detail::tmat4x4< f32 > f32mat4x4
+typedef detail::tquat< f32 > f32quat
+typedef detail::tvec1< f32 > f32vec1
+typedef detail::tvec2< f32 > f32vec2
+typedef detail::tvec3< f32 > f32vec3
+typedef detail::tvec4< f32 > f32vec4
+typedef float64 f64
+typedef detail::tmat2x2< f64 > f64mat2
+typedef detail::tmat2x2< f64 > f64mat2x2
+typedef detail::tmat2x3< f64 > f64mat2x3
+typedef detail::tmat2x4< f64 > f64mat2x4
+typedef detail::tmat3x3< f64 > f64mat3
+typedef detail::tmat3x2< f64 > f64mat3x2
+typedef detail::tmat3x3< f64 > f64mat3x3
+typedef detail::tmat3x4< f64 > f64mat3x4
+typedef detail::tmat4x4< f64 > f64mat4
+typedef detail::tmat4x2< f64 > f64mat4x2
+typedef detail::tmat4x3< f64 > f64mat4x3
+typedef detail::tmat4x4< f64 > f64mat4x4
+typedef detail::tquat< f64 > f64quat
+typedef detail::tvec1< f64 > f64vec1
+typedef detail::tvec2< f64 > f64vec2
+typedef detail::tvec3< f64 > f64vec3
+typedef detail::tvec4< f64 > f64vec4
+typedef detail::float16 float16_t
+typedef detail::float32 float32_t
+typedef detail::float64 float64_t
+typedef detail::tmat2x2< f32 > fmat2
+typedef detail::tmat2x2< f32 > fmat2x2
+typedef detail::tmat2x3< f32 > fmat2x3
+typedef detail::tmat2x4< f32 > fmat2x4
+typedef detail::tmat3x3< f32 > fmat3
+typedef detail::tmat3x2< f32 > fmat3x2
+typedef detail::tmat3x3< f32 > fmat3x3
+typedef detail::tmat3x4< f32 > fmat3x4
+typedef detail::tmat4x4< f32 > fmat4
+typedef detail::tmat4x2< f32 > fmat4x2
+typedef detail::tmat4x3< f32 > fmat4x3
+typedef detail::tmat4x4< f32 > fmat4x4
+typedef detail::tvec2< float > fvec2
+typedef detail::tvec3< float > fvec3
+typedef detail::tvec4< float > fvec4
+typedef int16 i16
+typedef detail::tvec1< i16 > i16vec1
+typedef detail::tvec2< i16 > i16vec2
+typedef detail::tvec3< i16 > i16vec3
+typedef detail::tvec4< i16 > i16vec4
+typedef int32 i32
+typedef detail::tvec1< i32 > i32vec1
+typedef detail::tvec2< i32 > i32vec2
+typedef detail::tvec3< i32 > i32vec3
+typedef detail::tvec4< i32 > i32vec4
+typedef int64 i64
+typedef detail::tvec1< i64 > i64vec1
+typedef detail::tvec2< i64 > i64vec2
+typedef detail::tvec3< i64 > i64vec3
+typedef detail::tvec4< i64 > i64vec4
+typedef int8 i8
+typedef detail::tvec1< i8 > i8vec1
+typedef detail::tvec2< i8 > i8vec2
+typedef detail::tvec3< i8 > i8vec3
+typedef detail::tvec4< i8 > i8vec4
+typedef detail::int16 int16_t
+typedef detail::int32 int32_t
+typedef detail::int64 int64_t
+typedef detail::int8 int8_t
+typedef uint16 u16
+typedef detail::tvec1< u16 > u16vec1
+typedef detail::tvec2< u16 > u16vec2
+typedef detail::tvec3< u16 > u16vec3
+typedef detail::tvec4< u16 > u16vec4
+typedef uint32 u32
+typedef detail::tvec1< u32 > u32vec1
+typedef detail::tvec2< u32 > u32vec2
+typedef detail::tvec3< u32 > u32vec3
+typedef detail::tvec4< u32 > u32vec4
+typedef uint64 u64
+typedef detail::tvec1< u64 > u64vec1
+typedef detail::tvec2< u64 > u64vec2
+typedef detail::tvec3< u64 > u64vec3
+typedef detail::tvec4< u64 > u64vec4
+typedef uint8 u8
+typedef detail::tvec1< u8 > u8vec1
+typedef detail::tvec2< u8 > u8vec2
+typedef detail::tvec3< u8 > u8vec3
+typedef detail::tvec4< u8 > u8vec4
+typedef detail::uint16 uint16_t
+typedef detail::uint32 uint32_t
+typedef detail::uint64 uint64_t
+typedef detail::uint8 uint8_t
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_type_precision: Vector and matrix types with defined precisions

+
Date:
2009-06-04 / 2011-06-05
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+
+GLM_GTC_quaternion: Quaternion types and functions (dependence)
+ +

Definition in file type_precision.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00122_source.html b/doc/api-0.9.3/a00122_source.html new file mode 100644 index 00000000..0de602b7 --- /dev/null +++ b/doc/api-0.9.3/a00122_source.html @@ -0,0 +1,287 @@ + + + + +type_precision.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_precision.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 
+00043 #ifndef GLM_GTC_type_precision
+00044 #define GLM_GTC_type_precision GLM_VERSION
+00045 
+00046 // Dependency:
+00047 #include "../glm.hpp"
+00048 #include "../gtc/half_float.hpp"
+00049 #include "../gtc/quaternion.hpp"
+00050 
+00051 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00052 #       pragma message("GLM: GLM_GTC_type_precision extension included")
+00053 #endif
+00054 
+00055 namespace glm
+00056 {
+00058         // Signed int vector types 
+00059 
+00062 
+00063         typedef detail::int8                                            int8;         
+00064         typedef detail::int16                                           int16;        
+00065         typedef detail::int32                                           int32;        
+00066         typedef detail::int64                                           int64;        
+00067 
+00068         typedef detail::int8                                            int8_t;         
+00069         typedef detail::int16                                           int16_t;        
+00070         typedef detail::int32                                           int32_t;        
+00071         typedef detail::int64                                           int64_t;        
+00072 
+00073         typedef int8                                                            i8;         
+00074         typedef int16                                                           i16;        
+00075         typedef int32                                                           i32;        
+00076         typedef int64                                                           i64;        
+00077 
+00078         typedef detail::tvec1<i8>                                       i8vec1;         
+00079         typedef detail::tvec2<i8>                                       i8vec2;     
+00080         typedef detail::tvec3<i8>                                       i8vec3;     
+00081         typedef detail::tvec4<i8>                                       i8vec4;     
+00082 
+00083         typedef detail::tvec1<i16>                                      i16vec1;        
+00084         typedef detail::tvec2<i16>                                      i16vec2;    
+00085         typedef detail::tvec3<i16>                                      i16vec3;    
+00086         typedef detail::tvec4<i16>                                      i16vec4;    
+00087 
+00088         typedef detail::tvec1<i32>                                      i32vec1;        
+00089         typedef detail::tvec2<i32>                                      i32vec2;    
+00090         typedef detail::tvec3<i32>                                      i32vec3;    
+00091         typedef detail::tvec4<i32>                                      i32vec4;    
+00092 
+00093         typedef detail::tvec1<i64>                                      i64vec1;        
+00094         typedef detail::tvec2<i64>                                      i64vec2;    
+00095         typedef detail::tvec3<i64>                                      i64vec3;    
+00096         typedef detail::tvec4<i64>                                      i64vec4;    
+00097 
+00099         // Unsigned int vector types 
+00100 
+00101         typedef detail::uint8                                           uint8;         
+00102         typedef detail::uint16                                          uint16;        
+00103         typedef detail::uint32                                          uint32;        
+00104         typedef detail::uint64                                          uint64;        
+00105 
+00106         typedef detail::uint8                                           uint8_t;         
+00107         typedef detail::uint16                                          uint16_t;        
+00108         typedef detail::uint32                                          uint32_t;        
+00109         typedef detail::uint64                                          uint64_t;        
+00110 
+00111         typedef uint8                                                           u8;         
+00112         typedef uint16                                                          u16;        
+00113         typedef uint32                                                          u32;        
+00114         typedef uint64                                                          u64;        
+00115 
+00116         typedef detail::tvec1<u8>                                       u8vec1;         
+00117         typedef detail::tvec2<u8>                                       u8vec2;     
+00118         typedef detail::tvec3<u8>                                       u8vec3;     
+00119         typedef detail::tvec4<u8>                                       u8vec4;     
+00120 
+00121         typedef detail::tvec1<u16>                                      u16vec1;    
+00122         typedef detail::tvec2<u16>                                      u16vec2;    
+00123         typedef detail::tvec3<u16>                                      u16vec3;    
+00124         typedef detail::tvec4<u16>                                      u16vec4;    
+00125 
+00126         typedef detail::tvec1<u32>                                      u32vec1;    
+00127         typedef detail::tvec2<u32>                                      u32vec2;    
+00128         typedef detail::tvec3<u32>                                      u32vec3;    
+00129         typedef detail::tvec4<u32>                                      u32vec4;    
+00130 
+00131         typedef detail::tvec1<u64>                                      u64vec1;    
+00132         typedef detail::tvec2<u64>                                      u64vec2;    
+00133         typedef detail::tvec3<u64>                                      u64vec3;    
+00134         typedef detail::tvec4<u64>                                      u64vec4;    
+00135 
+00137         // Float vector types 
+00138 
+00139         typedef detail::float16                                         float16;        
+00140         typedef detail::float32                                         float32;        
+00141         typedef detail::float64                                         float64;        
+00142 
+00143         typedef detail::float16                                         float16_t;      
+00144         typedef detail::float32                                         float32_t;      
+00145         typedef detail::float64                                         float64_t;      
+00146 
+00147         typedef float16                                                         f16;        
+00148         typedef float32                                                         f32;        
+00149         typedef float64                                                         f64;        
+00150 
+00151         typedef detail::tvec2<float>                            fvec2;          
+00152         typedef detail::tvec3<float>                            fvec3;          
+00153         typedef detail::tvec4<float>                            fvec4;          
+00154 
+00155         typedef detail::tvec1<f16>                                      f16vec1;    
+00156         typedef detail::tvec2<f16>                                      f16vec2;    
+00157         typedef detail::tvec3<f16>                                      f16vec3;    
+00158         typedef detail::tvec4<f16>                                      f16vec4;    
+00159 
+00160         typedef detail::tvec1<f32>                                      f32vec1;    
+00161         typedef detail::tvec2<f32>                                      f32vec2;    
+00162         typedef detail::tvec3<f32>                                      f32vec3;    
+00163         typedef detail::tvec4<f32>                                      f32vec4;    
+00164 
+00165         typedef detail::tvec1<f64>                                      f64vec1;    
+00166         typedef detail::tvec2<f64>                                      f64vec2;    
+00167         typedef detail::tvec3<f64>                                      f64vec3;    
+00168         typedef detail::tvec4<f64>                                      f64vec4;    
+00169 
+00171         // Float matrix types 
+00172 
+00173         //typedef f32                                                                   fmat1;  //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00174         typedef detail::tmat2x2<f32>                            fmat2;  
+00175         typedef detail::tmat3x3<f32>                            fmat3;  
+00176         typedef detail::tmat4x4<f32>                            fmat4;  
+00177 
+00178         //typedef f32                                                                   fmat1x1;        //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00179         typedef detail::tmat2x2<f32>                            fmat2x2;  
+00180         typedef detail::tmat2x3<f32>                            fmat2x3;        
+00181         typedef detail::tmat2x4<f32>                            fmat2x4;        
+00182         typedef detail::tmat3x2<f32>                            fmat3x2;        
+00183         typedef detail::tmat3x3<f32>                            fmat3x3;        
+00184         typedef detail::tmat3x4<f32>                            fmat3x4;        
+00185         typedef detail::tmat4x2<f32>                            fmat4x2;        
+00186         typedef detail::tmat4x3<f32>                            fmat4x3;        
+00187         typedef detail::tmat4x4<f32>                            fmat4x4;        
+00188 
+00189         //typedef f16                                                                   f16mat1;    //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00190         typedef detail::tmat2x2<f16>                            f16mat2;        
+00191         typedef detail::tmat3x3<f16>                            f16mat3;        
+00192         typedef detail::tmat4x4<f16>                            f16mat4;        
+00193 
+00194         //typedef f16                                                                   f16mat1x1;      //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00195         typedef detail::tmat2x2<f16>                            f16mat2x2;      
+00196         typedef detail::tmat2x3<f16>                            f16mat2x3;      
+00197         typedef detail::tmat2x4<f16>                            f16mat2x4;      
+00198         typedef detail::tmat3x2<f16>                            f16mat3x2;      
+00199         typedef detail::tmat3x3<f16>                            f16mat3x3;      
+00200         typedef detail::tmat3x4<f16>                            f16mat3x4;      
+00201         typedef detail::tmat4x2<f16>                            f16mat4x2;      
+00202         typedef detail::tmat4x3<f16>                            f16mat4x3;      
+00203         typedef detail::tmat4x4<f16>                            f16mat4x4;      
+00204 
+00205         //typedef f32                                                                   f32mat1;        //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00206         typedef detail::tmat2x2<f32>                            f32mat2;        
+00207         typedef detail::tmat3x3<f32>                            f32mat3;        
+00208         typedef detail::tmat4x4<f32>                            f32mat4;        
+00209 
+00210         //typedef f32                                                                   f32mat1x1;      //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00211         typedef detail::tmat2x2<f32>                            f32mat2x2;  
+00212         typedef detail::tmat2x3<f32>                            f32mat2x3;      
+00213         typedef detail::tmat2x4<f32>                            f32mat2x4;      
+00214         typedef detail::tmat3x2<f32>                            f32mat3x2;      
+00215         typedef detail::tmat3x3<f32>                            f32mat3x3;      
+00216         typedef detail::tmat3x4<f32>                            f32mat3x4;      
+00217         typedef detail::tmat4x2<f32>                            f32mat4x2;      
+00218         typedef detail::tmat4x3<f32>                            f32mat4x3;      
+00219         typedef detail::tmat4x4<f32>                            f32mat4x4;      
+00220 
+00221         //typedef f64                                                                   f64mat1;        //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00222         typedef detail::tmat2x2<f64>                            f64mat2;        
+00223         typedef detail::tmat3x3<f64>                            f64mat3;        
+00224         typedef detail::tmat4x4<f64>                            f64mat4;        
+00225 
+00226         //typedef f64                                                                   f64mat1x1;      //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
+00227         typedef detail::tmat2x2<f64>                            f64mat2x2;      
+00228         typedef detail::tmat2x3<f64>                            f64mat2x3;      
+00229         typedef detail::tmat2x4<f64>                            f64mat2x4;      
+00230         typedef detail::tmat3x2<f64>                            f64mat3x2;      
+00231         typedef detail::tmat3x3<f64>                            f64mat3x3;      
+00232         typedef detail::tmat3x4<f64>                            f64mat3x4;      
+00233         typedef detail::tmat4x2<f64>                            f64mat4x2;      
+00234         typedef detail::tmat4x3<f64>                            f64mat4x3;      
+00235         typedef detail::tmat4x4<f64>                            f64mat4x4;      
+00236 
+00238         // Float quaternion types 
+00239 
+00240         typedef detail::tquat<f16>                                      f16quat;    
+00241         typedef detail::tquat<f32>                                      f32quat;    
+00242         typedef detail::tquat<f64>                                      f64quat;    
+00243 
+00245 }//namespace glm
+00246 
+00247 #include "type_precision.inl"
+00248 
+00249 #endif//GLM_GTC_type_precision
+
+
+ + + diff --git a/doc/api-0.9.3/a00123.html b/doc/api-0.9.3/a00123.html new file mode 100644 index 00000000..1b7b80ee --- /dev/null +++ b/doc/api-0.9.3/a00123.html @@ -0,0 +1,170 @@ + + + + +type_ptr.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_ptr.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x2< T > 
make_mat2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x2< T > 
make_mat2x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x3< T > 
make_mat2x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x4< T > 
make_mat2x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x3< T > 
make_mat3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x2< T > 
make_mat3x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x3< T > 
make_mat3x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x4< T > 
make_mat3x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x4< T > 
make_mat4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x2< T > 
make_mat4x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x3< T > 
make_mat4x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x4< T > 
make_mat4x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tquat< T > 
make_quat (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec2< T > 
make_vec2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
make_vec3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec4< T > 
make_vec4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tquat< T > const &q)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec4< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec3< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec3< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec2< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec2< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec4< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x2< T > const &mat)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_type_ptr: Memory layout access

+
Date:
2009-05-06 / 2011-06-05
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTC_half_float: Half-precision floating-point based types and functions (dependence)
+
+GLM_GTC_quaternion: Quaternion types and functions (dependence)
+ +

Definition in file type_ptr.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00123_source.html b/doc/api-0.9.3/a00123_source.html new file mode 100644 index 00000000..5ed958d0 --- /dev/null +++ b/doc/api-0.9.3/a00123_source.html @@ -0,0 +1,470 @@ + + + + +type_ptr.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_ptr.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 
+00043 
+00044 
+00045 
+00046 
+00047 
+00048 
+00049 
+00050 
+00051 
+00052 
+00053 
+00054 
+00055 
+00056 
+00057 
+00058 
+00059 #ifndef GLM_GTC_type_ptr
+00060 #define GLM_GTC_type_ptr GLM_VERSION
+00061 
+00062 // Dependency:
+00063 #include "../glm.hpp"
+00064 #include "../gtc/half_float.hpp"
+00065 #include "../gtc/quaternion.hpp"
+00066 #include <cstring>
+00067 
+00068 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00069 #       pragma message("GLM: GLM_GTC_type_ptr extension included")
+00070 #endif
+00071 
+00072 namespace glm
+00073 { 
+00076 
+00079         template<typename T>
+00080         GLM_FUNC_QUALIFIER T const * value_ptr
+00081         (
+00082                 detail::tvec2<T> const & vec
+00083         )
+00084         {
+00085                 return &(vec.x);
+00086         }
+00087 
+00090         template<typename T>
+00091         GLM_FUNC_QUALIFIER T * value_ptr
+00092         (
+00093                 detail::tvec2<T> & vec
+00094         )
+00095         {
+00096                 return &(vec.x);
+00097         }
+00098 
+00101         template<typename T>
+00102         GLM_FUNC_QUALIFIER T const * value_ptr
+00103         (
+00104                 detail::tvec3<T> const & vec
+00105         )
+00106         {
+00107                 return &(vec.x);
+00108         }
+00109 
+00112         template<typename T>
+00113         GLM_FUNC_QUALIFIER T * value_ptr
+00114         (
+00115                 detail::tvec3<T> & vec
+00116         )
+00117         {
+00118                 return &(vec.x);
+00119         }
+00120                 
+00123         template<typename T>
+00124         GLM_FUNC_QUALIFIER T const * value_ptr
+00125         (       
+00126                 detail::tvec4<T> const & vec
+00127         )
+00128         {
+00129                 return &(vec.x);
+00130         }
+00131 
+00134         template<typename T>
+00135         GLM_FUNC_QUALIFIER T * value_ptr
+00136         (       
+00137                 detail::tvec4<T> & vec
+00138         )
+00139         {
+00140                 return &(vec.x);
+00141         }
+00142 
+00145         template<typename T>
+00146         GLM_FUNC_QUALIFIER T const * value_ptr
+00147         (
+00148                 detail::tmat2x2<T> const & mat
+00149         )
+00150         {
+00151                 return &(mat[0].x);
+00152         }
+00153 
+00156         template<typename T>
+00157         GLM_FUNC_QUALIFIER T * value_ptr
+00158         (
+00159                 detail::tmat2x2<T> & mat
+00160         )
+00161         {
+00162                 return &(mat[0].x);
+00163         }
+00164                 
+00167         template<typename T>
+00168         GLM_FUNC_QUALIFIER T const * value_ptr
+00169         (
+00170                 detail::tmat3x3<T> const & mat
+00171         )
+00172         {
+00173                 return &(mat[0].x);
+00174         }
+00175 
+00178         template<typename T>
+00179         GLM_FUNC_QUALIFIER T * value_ptr
+00180         (
+00181                 detail::tmat3x3<T> & mat
+00182         )
+00183         {
+00184                 return &(mat[0].x);
+00185         }
+00186                 
+00189         template<typename T>
+00190         GLM_FUNC_QUALIFIER T const * value_ptr
+00191         (
+00192                 detail::tmat4x4<T> const & mat
+00193         )
+00194         {
+00195                 return &(mat[0].x);
+00196         }
+00197 
+00200         template<typename T>
+00201         GLM_FUNC_QUALIFIER T * value_ptr
+00202         (
+00203                 detail::tmat4x4<T> & mat
+00204         )
+00205         {
+00206                 return &(mat[0].x);
+00207         }
+00208 
+00211         template<typename T>
+00212         GLM_FUNC_QUALIFIER T const * value_ptr
+00213         (
+00214                 detail::tmat2x3<T> const & mat
+00215         )
+00216         {
+00217                 return &(mat[0].x);
+00218         }
+00219 
+00222         template<typename T>
+00223         GLM_FUNC_QUALIFIER T * value_ptr
+00224         (
+00225                 detail::tmat2x3<T> & mat
+00226         )
+00227         {
+00228                 return &(mat[0].x);
+00229         }
+00230                 
+00233         template<typename T>
+00234         GLM_FUNC_QUALIFIER T const * value_ptr
+00235         (
+00236                 detail::tmat3x2<T> const & mat
+00237         )
+00238         {
+00239                 return &(mat[0].x);
+00240         }
+00241 
+00244         template<typename T>
+00245         GLM_FUNC_QUALIFIER T * value_ptr
+00246         (
+00247                 detail::tmat3x2<T> & mat
+00248         )
+00249         {
+00250                 return &(mat[0].x);
+00251         }
+00252                 
+00255         template<typename T>
+00256         GLM_FUNC_QUALIFIER T const * value_ptr
+00257         (
+00258                 detail::tmat2x4<T> const & mat
+00259         )
+00260         {
+00261                 return &(mat[0].x);
+00262         }
+00263 
+00266         template<typename T>
+00267         GLM_FUNC_QUALIFIER T * value_ptr
+00268         (
+00269                 detail::tmat2x4<T> & mat
+00270         )
+00271         {
+00272                 return &(mat[0].x);
+00273         }
+00274                 
+00277         template<typename T>
+00278         GLM_FUNC_QUALIFIER T const * value_ptr
+00279         (
+00280                 detail::tmat4x2<T> const & mat
+00281         )
+00282         {
+00283                 return &(mat[0].x);
+00284         }
+00285 
+00288         template<typename T>
+00289         GLM_FUNC_QUALIFIER T * value_ptr
+00290         (       
+00291                 detail::tmat4x2<T> & mat
+00292         )
+00293         {
+00294                 return &(mat[0].x);
+00295         }
+00296                 
+00299         template<typename T>
+00300         GLM_FUNC_QUALIFIER T const * value_ptr
+00301         (
+00302                 detail::tmat3x4<T> const & mat
+00303         )
+00304         {
+00305                 return &(mat[0].x);
+00306         }
+00307 
+00310         template<typename T>
+00311         GLM_FUNC_QUALIFIER T * value_ptr
+00312         (
+00313                 detail::tmat3x4<T> & mat
+00314         )
+00315         {
+00316                 return &(mat[0].x);
+00317         }
+00318                 
+00321         template<typename T>
+00322         GLM_FUNC_QUALIFIER T const * value_ptr
+00323         (
+00324                 detail::tmat4x3<T> const & mat
+00325         )
+00326         {
+00327                 return &(mat[0].x);
+00328         }
+00329     
+00332         template<typename T>
+00333         GLM_FUNC_QUALIFIER T const * value_ptr
+00334         (
+00335         detail::tquat<T> const & q
+00336     )
+00337         {
+00338                 return &(q[0]);
+00339         }
+00340     
+00343         template<typename T>
+00344         GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T> & mat)
+00345         {
+00346                 return &(mat[0].x);
+00347         }
+00348 
+00351         template<typename T>
+00352         GLM_FUNC_QUALIFIER detail::tvec2<T> make_vec2(T const * const ptr)
+00353         {
+00354                 detail::tvec2<T> Result;
+00355                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T>));
+00356                 return Result;
+00357         }
+00358 
+00361         template<typename T>
+00362         GLM_FUNC_QUALIFIER detail::tvec3<T> make_vec3(T const * const ptr)
+00363         {
+00364                 detail::tvec3<T> Result;
+00365                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T>));
+00366                 return Result;
+00367         }
+00368 
+00371         template<typename T>
+00372         GLM_FUNC_QUALIFIER detail::tvec4<T> make_vec4(T const * const ptr)
+00373         {
+00374                 detail::tvec4<T> Result;
+00375                 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T>));
+00376                 return Result;
+00377         }
+00378 
+00381         template<typename T>
+00382         GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2x2(T const * const ptr)
+00383         {
+00384                 detail::tmat2x2<T> Result;
+00385                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T>));
+00386                 return Result;
+00387         }
+00388         
+00391         template<typename T>
+00392         GLM_FUNC_QUALIFIER detail::tmat2x3<T> make_mat2x3(T const * const ptr)
+00393         {
+00394                 detail::tmat2x3<T> Result;
+00395                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T>));
+00396                 return Result;
+00397         }
+00398         
+00401         template<typename T>
+00402         GLM_FUNC_QUALIFIER detail::tmat2x4<T> make_mat2x4(T const * const ptr)
+00403         {
+00404                 detail::tmat2x4<T> Result;
+00405                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T>));
+00406                 return Result;
+00407         }
+00408         
+00411         template<typename T>
+00412         GLM_FUNC_QUALIFIER detail::tmat3x2<T> make_mat3x2(T const * const ptr)
+00413         {
+00414                 detail::tmat3x2<T> Result;
+00415                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T>));
+00416                 return Result;
+00417         }
+00418         
+00421         template<typename T>
+00422         GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3x3(T const * const ptr)
+00423         {
+00424                 detail::tmat3x3<T> Result;
+00425                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T>));
+00426                 return Result;
+00427         }
+00428 
+00431         template<typename T>
+00432         GLM_FUNC_QUALIFIER detail::tmat3x4<T> make_mat3x4(T const * const ptr)
+00433         {
+00434                 detail::tmat3x4<T> Result;
+00435                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T>));
+00436                 return Result;
+00437         }
+00438         
+00441         template<typename T>
+00442         GLM_FUNC_QUALIFIER detail::tmat4x2<T> make_mat4x2(T const * const ptr)
+00443         {
+00444                 detail::tmat4x2<T> Result;
+00445                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T>));
+00446                 return Result;
+00447         }
+00448         
+00451         template<typename T>
+00452         GLM_FUNC_QUALIFIER detail::tmat4x3<T> make_mat4x3(T const * const ptr)
+00453         {
+00454                 detail::tmat4x3<T> Result;
+00455                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T>));
+00456                 return Result;
+00457         }
+00458         
+00461         template<typename T>
+00462         GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4x4(T const * const ptr)
+00463         {
+00464                 detail::tmat4x4<T> Result;
+00465                 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T>));
+00466                 return Result;
+00467         }
+00468         
+00471         template<typename T>
+00472         GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2(T const * const ptr)
+00473         {
+00474                 return make_mat2x2(ptr);
+00475         }
+00476         
+00479         template<typename T>
+00480         GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3(T const * const ptr)
+00481         {
+00482                 return make_mat3x3(ptr);
+00483         }
+00484                 
+00487         template<typename T>
+00488         GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4(T const * const ptr)
+00489         {
+00490                 return make_mat4x4(ptr);
+00491         }
+00492  
+00495         template<typename T>
+00496         GLM_FUNC_QUALIFIER detail::tquat<T> make_quat(T const * const ptr)
+00497         {
+00498                 detail::tquat<T> Result;
+00499                 memcpy(value_ptr(Result), ptr, sizeof(detail::tquat<T>));
+00500                 return Result;
+00501         }
+00502     
+00504 }//namespace glm
+00505 
+00506 #include "type_ptr.inl"
+00507 
+00508 #endif//GLM_GTC_type_ptr
+00509 
+
+
+ + + diff --git a/doc/api-0.9.3/a00124.html b/doc/api-0.9.3/a00124.html new file mode 100644 index 00000000..03562247 --- /dev/null +++ b/doc/api-0.9.3/a00124.html @@ -0,0 +1,63 @@ + + + + +type_size.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

type_size.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-10-05 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_size.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00124_source.html b/doc/api-0.9.3/a00124_source.html new file mode 100644 index 00000000..e71eac66 --- /dev/null +++ b/doc/api-0.9.3/a00124_source.html @@ -0,0 +1,89 @@ + + + + +type_size.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_size.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_size
+00030 #define glm_core_type_size
+00031 
+00032 #include <cstdlib>
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037         //typedef std::size_t size_t;
+00038         typedef int sizeType;
+00039 
+00040 }//namespace detail
+00041 }//namespace glm
+00042 
+00043 #endif//glm_core_type_size
+
+
+ + + diff --git a/doc/api-0.9.3/a00125.html b/doc/api-0.9.3/a00125.html new file mode 100644 index 00000000..90b89434 --- /dev/null +++ b/doc/api-0.9.3/a00125.html @@ -0,0 +1,63 @@ + + + + +type_vec.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

type_vec.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2010-01-26 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_vec.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00125_source.html b/doc/api-0.9.3/a00125_source.html new file mode 100644 index 00000000..e635c39c --- /dev/null +++ b/doc/api-0.9.3/a00125_source.html @@ -0,0 +1,87 @@ + + + + +type_vec.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_vec.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_vec
+00030 #define glm_core_type_vec
+00031 
+00032 #include "type_gentype.hpp"
+00033 
+00034 namespace glm{
+00035 namespace detail
+00036 {
+00037 
+00038 }//namespace detail
+00039 }//namespace glm
+00040 
+00041 #endif//glm_core_type_vec
+
+
+ + + diff --git a/doc/api-0.9.3/a00126.html b/doc/api-0.9.3/a00126.html new file mode 100644 index 00000000..f9c3c4c5 --- /dev/null +++ b/doc/api-0.9.3/a00126.html @@ -0,0 +1,63 @@ + + + + +type_vec1.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

type_vec1.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-25 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_vec1.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00126_source.html b/doc/api-0.9.3/a00126_source.html new file mode 100644 index 00000000..f473a88f --- /dev/null +++ b/doc/api-0.9.3/a00126_source.html @@ -0,0 +1,245 @@ + + + + +type_vec1.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_vec1.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_gentype1
+00030 #define glm_core_type_gentype1
+00031 
+00032 #include "type_vec.hpp"
+00033 #include "type_float.hpp"
+00034 #include "type_int.hpp"
+00035 #include "type_size.hpp"
+00036 #include "_swizzle.hpp"
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041         template <typename T> struct tref1;
+00042         template <typename T> struct tref2;
+00043         template <typename T> struct tref3;
+00044         template <typename T> struct tref4;
+00045         template <typename T> struct tvec1;
+00046         template <typename T> struct tvec2;
+00047         template <typename T> struct tvec3;
+00048         template <typename T> struct tvec4;
+00049 
+00050         template <typename T>
+00051         struct tvec1
+00052         {
+00053                 enum ctor{null};
+00054 
+00055                 typedef T value_type;
+00056                 typedef std::size_t size_type;
+00057                 GLM_FUNC_DECL size_type length() const;
+00058                 static GLM_FUNC_DECL size_type value_size();
+00059 
+00060                 typedef tvec1<T> type;
+00061                 typedef tvec1<bool> bool_type;
+00062 
+00064                 // Data
+00065 
+00066 #               if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW)
+00067                         value_type x;
+00068 #               else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES)
+00069                         union {value_type x, r, s;};
+00070 #               endif//GLM_COMPONENT
+00071 
+00073                 // Accesses
+00074 
+00075                 GLM_FUNC_DECL value_type & operator[](size_type i);
+00076                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
+00077 
+00079                 // Implicit basic constructors
+00080 
+00081                 GLM_FUNC_DECL tvec1();
+00082                 GLM_FUNC_DECL tvec1(tvec1<T> const & v);
+00083 
+00085                 // Explicit basic constructors
+00086 
+00087                 GLM_FUNC_DECL explicit tvec1(
+00088                         ctor);
+00089                 GLM_FUNC_DECL explicit tvec1(
+00090                         value_type const & s);
+00091 
+00093                 // Swizzle constructors
+00094 
+00095                 GLM_FUNC_DECL tvec1(tref1<T> const & r);
+00096 
+00098                 // Convertion scalar constructors
+00099 
+00101                 template <typename U> 
+00102                 GLM_FUNC_DECL explicit tvec1(U const & s);
+00103 
+00105                 // Convertion vector constructors
+00106 
+00108                 template <typename U> 
+00109                 GLM_FUNC_DECL explicit tvec1(tvec2<U> const & v);
+00111                 template <typename U> 
+00112                 GLM_FUNC_DECL explicit tvec1(tvec3<U> const & v);
+00114                 template <typename U> 
+00115                 GLM_FUNC_DECL explicit tvec1(tvec4<U> const & v);
+00116 
+00118                 // Unary arithmetic operators
+00119 
+00120                 GLM_FUNC_DECL tvec1<T> & operator= (tvec1<T> const & v);
+00121                 template <typename U> 
+00122                 GLM_FUNC_DECL tvec1<T> & operator= (tvec1<U> const & v);
+00123 
+00124                 template <typename U> 
+00125                 GLM_FUNC_DECL tvec1<T> & operator+=(U const & s);
+00126                 template <typename U> 
+00127                 GLM_FUNC_DECL tvec1<T> & operator+=(tvec1<U> const & v);
+00128                 template <typename U> 
+00129                 GLM_FUNC_DECL tvec1<T> & operator-=(U const & s);
+00130                 template <typename U> 
+00131                 GLM_FUNC_DECL tvec1<T> & operator-=(tvec1<U> const & v);
+00132                 template <typename U> 
+00133                 GLM_FUNC_DECL tvec1<T> & operator*=(U const & s);
+00134                 template <typename U> 
+00135                 GLM_FUNC_DECL tvec1<T> & operator*=(tvec1<U> const & v);
+00136                 template <typename U> 
+00137                 GLM_FUNC_DECL tvec1<T> & operator/=(U const & s);
+00138                 template <typename U> 
+00139                 GLM_FUNC_DECL tvec1<T> & operator/=(tvec1<U> const & v);
+00140                 GLM_FUNC_DECL tvec1<T> & operator++();
+00141                 GLM_FUNC_DECL tvec1<T> & operator--();
+00142 
+00144                 // Unary bit operators
+00145 
+00146                 template <typename U> 
+00147                 GLM_FUNC_DECL tvec1<T> & operator%=(U const & s);
+00148                 template <typename U> 
+00149                 GLM_FUNC_DECL tvec1<T> & operator%=(tvec1<U> const & v);
+00150                 template <typename U> 
+00151                 GLM_FUNC_DECL tvec1<T> & operator&=(U const & s);
+00152                 template <typename U> 
+00153                 GLM_FUNC_DECL tvec1<T> & operator&=(tvec1<U> const & v);
+00154                 template <typename U> 
+00155                 GLM_FUNC_DECL tvec1<T> & operator|=(U const & s);
+00156                 template <typename U> 
+00157                 GLM_FUNC_DECL tvec1<T> & operator|=(tvec1<U> const & v);
+00158                 template <typename U> 
+00159                 GLM_FUNC_DECL tvec1<T> & operator^=(U const & s);
+00160                 template <typename U> 
+00161                 GLM_FUNC_DECL tvec1<T> & operator^=(tvec1<U> const & v);
+00162                 template <typename U> 
+00163                 GLM_FUNC_DECL tvec1<T> & operator<<=(U const & s);
+00164                 template <typename U> 
+00165                 GLM_FUNC_DECL tvec1<T> & operator<<=(tvec1<U> const & v);
+00166                 template <typename U> 
+00167                 GLM_FUNC_DECL tvec1<T> & operator>>=(U const & s);
+00168                 template <typename U> 
+00169                 GLM_FUNC_DECL tvec1<T> & operator>>=(tvec1<U> const & v);
+00170 
+00172                 // Swizzle operators
+00173 
+00174                 GLM_FUNC_DECL value_type swizzle(comp X) const;
+00175                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
+00176                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
+00177                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
+00178                 GLM_FUNC_DECL tref1<T> swizzle(comp X);
+00179         };
+00180 
+00181         template <typename T>
+00182         struct tref1
+00183         {
+00184                 GLM_FUNC_DECL tref1(T & x);
+00185                 GLM_FUNC_DECL tref1(tref1<T> const & r);
+00186                 GLM_FUNC_DECL tref1(tvec1<T> const & v);
+00187 
+00188                 GLM_FUNC_DECL tref1<T> & operator= (tref1<T> const & r);
+00189                 GLM_FUNC_DECL tref1<T> & operator= (tvec1<T> const & v);
+00190 
+00191                 T& x;
+00192         };
+00193 
+00194         GLM_DETAIL_IS_VECTOR(tvec1);
+00195 
+00196         typedef detail::tvec1<highp_float>              highp_vec1_t;
+00197         typedef detail::tvec1<mediump_float>    mediump_vec1_t;
+00198         typedef detail::tvec1<lowp_float>               lowp_vec1_t;
+00199         typedef detail::tvec1<highp_int>                highp_ivec1_t;
+00200         typedef detail::tvec1<mediump_int>              mediump_ivec1_t;
+00201         typedef detail::tvec1<lowp_int>                 lowp_ivec1_t;
+00202         typedef detail::tvec1<highp_uint>               highp_uvec1_t;
+00203         typedef detail::tvec1<mediump_uint>             mediump_uvec1_t;
+00204         typedef detail::tvec1<lowp_uint>                lowp_uvec1_t;
+00205 
+00206 }//namespace detail
+00207 }//namespace glm
+00208 
+00209 #ifndef GLM_EXTERNAL_TEMPLATE
+00210 #include "type_vec1.inl"
+00211 #endif//GLM_EXTERNAL_TEMPLATE
+00212 
+00213 #endif//glm_core_type_gentype1
+
+
+ + + diff --git a/doc/api-0.9.3/a00127.html b/doc/api-0.9.3/a00127.html new file mode 100644 index 00000000..588eeeb8 --- /dev/null +++ b/doc/api-0.9.3/a00127.html @@ -0,0 +1,85 @@ + + + + +type_vec2.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_vec2.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

struct  tvec2< T >
 The basic 2D vector type. More...

+Typedefs

typedef detail::tvec2< highp_int > highp_ivec2
typedef detail::tvec2< highp_uint > highp_uvec2
typedef detail::tvec2
+< highp_float > 
highp_vec2
typedef detail::tvec2< lowp_int > lowp_ivec2
typedef detail::tvec2< lowp_uint > lowp_uvec2
typedef detail::tvec2< lowp_float > lowp_vec2
typedef detail::tvec2
+< mediump_int > 
mediump_ivec2
typedef detail::tvec2
+< mediump_uint > 
mediump_uvec2
typedef detail::tvec2
+< mediump_float > 
mediump_vec2
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-18 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_vec2.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00127_source.html b/doc/api-0.9.3/a00127_source.html new file mode 100644 index 00000000..f4143538 --- /dev/null +++ b/doc/api-0.9.3/a00127_source.html @@ -0,0 +1,300 @@ + + + + +type_vec2.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_vec2.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_gentype2
+00030 #define glm_core_type_gentype2
+00031 
+00032 #include "type_vec.hpp"
+00033 #include "type_float.hpp"
+00034 #include "type_int.hpp"
+00035 #include "type_size.hpp"
+00036 #include "_swizzle.hpp"
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041         template <typename T> struct tref2;
+00042         template <typename T> struct tref3;
+00043         template <typename T> struct tref4;
+00044         template <typename T> struct tvec3;
+00045         template <typename T> struct tvec4;
+00046 
+00049         template <typename T>
+00050         struct tvec2
+00051         {
+00052                 enum ctor{null};
+00053 
+00054                 typedef T value_type;
+00055                 typedef std::size_t size_type;
+00056                 GLM_FUNC_DECL size_type length() const;
+00057                 static GLM_FUNC_DECL size_type value_size();
+00058 
+00059                 typedef tvec2<T> type;
+00060                 typedef tvec2<bool> bool_type;
+00061 
+00063                 // Data
+00064 
+00065 #       if(GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE() && !defined(GLM_FORCE_ONLY_XYZW))
+00066                 union 
+00067                 {
+00068 #               if(defined(GLM_SWIZZLE))
+00069                         _GLM_SWIZZLE2_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, x, y)
+00070                         _GLM_SWIZZLE2_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, r, g)
+00071                         _GLM_SWIZZLE2_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, s, t)
+00072                         _GLM_SWIZZLE2_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, x, y)
+00073                         _GLM_SWIZZLE2_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, r, g)
+00074                         _GLM_SWIZZLE2_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, s, t)
+00075                         _GLM_SWIZZLE2_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, x, y)
+00076                         _GLM_SWIZZLE2_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, r, g)
+00077                         _GLM_SWIZZLE2_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, s, t)
+00078 #               endif//(defined(GLM_SWIZZLE))
+00079 
+00080                         struct{value_type r, g;};
+00081                         struct{value_type s, t;};
+00082                         struct{value_type x, y;};
+00083                 };
+00084 #       elif(GLM_SUPPORT_ANONYMOUS_UNION() && !defined(GLM_FORCE_ONLY_XYZW))
+00085                 union {value_type x, r, s;};
+00086                 union {value_type y, g, t;};
+00087 
+00088 #               if(defined(GLM_SWIZZLE))
+00089                         // Defines all he swizzle operator as functions
+00090                         GLM_SWIZZLE_GEN_REF_FROM_VEC2(value_type, detail::tvec2, detail::tref2)
+00091                         GLM_SWIZZLE_GEN_VEC_FROM_VEC2(value_type, detail::tvec2, detail::tvec2, detail::tvec3, detail::tvec4)
+00092 #               endif//(defined(GLM_SWIZZLE))
+00093 #       else
+00094                 value_type x, y;
+00095 
+00096 #               if(defined(GLM_SWIZZLE))
+00097                         // Defines all he swizzle operator as functions
+00098                         GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(value_type, detail::tvec2, detail::tref2, x, y)
+00099                         GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(value_type, detail::tvec2, detail::tvec2, detail::tvec3, detail::tvec4, x, y)
+00100 #               endif//(defined(GLM_SWIZZLE))
+00101 #       endif//GLM_COMPONENT
+00102 
+00104                 // Accesses
+00105 
+00106                 GLM_FUNC_DECL value_type & operator[](size_type i);
+00107                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
+00108 
+00110                 // Implicit basic constructors
+00111 
+00112                 GLM_FUNC_DECL tvec2();
+00113                 GLM_FUNC_DECL tvec2(tvec2<T> const & v);
+00114 
+00116                 // Explicit basic constructors
+00117 
+00118                 GLM_FUNC_DECL explicit tvec2(
+00119                         ctor);
+00120                 GLM_FUNC_DECL explicit tvec2(
+00121                         value_type const & s);
+00122                 GLM_FUNC_DECL explicit tvec2(
+00123                         value_type const & s1, 
+00124                         value_type const & s2);
+00125 
+00127                 // Swizzle constructors
+00128 
+00129                 tvec2(tref2<T> const & r);
+00130 
+00131         template <int E0, int E1>
+00132         GLM_FUNC_DECL tvec2(const glm::detail::swizzle<2,T,tvec2<T>,E0,E1,-1,-2>& that)
+00133         {
+00134             *this = that();
+00135         }
+00136 
+00138                 // Convertion constructors
+00139 
+00141                 template <typename U> 
+00142                 GLM_FUNC_DECL explicit tvec2(
+00143                         U const & x);
+00145                 template <typename U, typename V> 
+00146                 GLM_FUNC_DECL explicit tvec2(
+00147                         U const & x, 
+00148                         V const & y);
+00149 
+00151                 // Convertion vector constructors
+00152 
+00154                 template <typename U> 
+00155                 GLM_FUNC_DECL explicit tvec2(tvec2<U> const & v);
+00157                 template <typename U> 
+00158                 GLM_FUNC_DECL explicit tvec2(tvec3<U> const & v);
+00160                 template <typename U> 
+00161                 GLM_FUNC_DECL explicit tvec2(tvec4<U> const & v);
+00162 
+00164                 // Unary arithmetic operators
+00165 
+00166                 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<T> const & v);
+00167                 template <typename U> 
+00168                 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<U> const & v);
+00169 
+00170                 template <typename U> 
+00171                 GLM_FUNC_DECL tvec2<T> & operator+=(U const & s);
+00172                 template <typename U> 
+00173                 GLM_FUNC_DECL tvec2<T> & operator+=(tvec2<U> const & v);
+00174                 template <typename U> 
+00175                 GLM_FUNC_DECL tvec2<T> & operator-=(U const & s);
+00176                 template <typename U> 
+00177                 GLM_FUNC_DECL tvec2<T> & operator-=(tvec2<U> const & v);
+00178                 template <typename U> 
+00179                 GLM_FUNC_DECL tvec2<T> & operator*=(U const & s);
+00180                 template <typename U> 
+00181                 GLM_FUNC_DECL tvec2<T> & operator*=(tvec2<U> const & v);
+00182                 template <typename U> 
+00183                 GLM_FUNC_DECL tvec2<T> & operator/=(U const & s);
+00184                 template <typename U> 
+00185                 GLM_FUNC_DECL tvec2<T> & operator/=(tvec2<U> const & v);
+00186                 GLM_FUNC_DECL tvec2<T> & operator++();
+00187                 GLM_FUNC_DECL tvec2<T> & operator--();
+00188 
+00190                 // Unary bit operators
+00191 
+00192                 template <typename U> 
+00193                 GLM_FUNC_DECL tvec2<T> & operator%= (U const & s);
+00194                 template <typename U> 
+00195                 GLM_FUNC_DECL tvec2<T> & operator%= (tvec2<U> const & v);
+00196                 template <typename U> 
+00197                 GLM_FUNC_DECL tvec2<T> & operator&= (U const & s);
+00198                 template <typename U> 
+00199                 GLM_FUNC_DECL tvec2<T> & operator&= (tvec2<U> const & v);
+00200                 template <typename U> 
+00201                 GLM_FUNC_DECL tvec2<T> & operator|= (U const & s);
+00202                 template <typename U> 
+00203                 GLM_FUNC_DECL tvec2<T> & operator|= (tvec2<U> const & v);
+00204                 template <typename U> 
+00205                 GLM_FUNC_DECL tvec2<T> & operator^= (U const & s);
+00206                 template <typename U> 
+00207                 GLM_FUNC_DECL tvec2<T> & operator^= (tvec2<U> const & v);
+00208                 template <typename U> 
+00209                 GLM_FUNC_DECL tvec2<T> & operator<<=(U const & s);
+00210                 template <typename U> 
+00211                 GLM_FUNC_DECL tvec2<T> & operator<<=(tvec2<U> const & v);
+00212                 template <typename U> 
+00213                 GLM_FUNC_DECL tvec2<T> & operator>>=(U const & s);
+00214                 template <typename U> 
+00215                 GLM_FUNC_DECL tvec2<T> & operator>>=(tvec2<U> const & v);
+00216 
+00218                 // Swizzle operators
+00219 
+00220                 GLM_FUNC_DECL value_type swizzle(comp X) const;
+00221                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
+00222                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
+00223                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
+00224                 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y);
+00225         };
+00226 
+00227         template <typename T>
+00228         struct tref2
+00229         {
+00230                 GLM_FUNC_DECL tref2(T & x, T & y);
+00231                 GLM_FUNC_DECL tref2(tref2<T> const & r);
+00232                 GLM_FUNC_DECL explicit tref2(tvec2<T> const & v);
+00233 
+00234                 GLM_FUNC_DECL tref2<T> & operator= (tref2<T> const & r);
+00235                 GLM_FUNC_DECL tref2<T> & operator= (tvec2<T> const & v);
+00236 
+00237                 GLM_FUNC_DECL tvec2<T> operator() ();
+00238 
+00239                 T & x;
+00240                 T & y;
+00241         };
+00242 
+00243         GLM_DETAIL_IS_VECTOR(tvec2);
+00244 
+00245 } //namespace detail
+00246 
+00251         typedef detail::tvec2<highp_float>              highp_vec2;
+00252 
+00257         typedef detail::tvec2<mediump_float>    mediump_vec2;
+00258 
+00263         typedef detail::tvec2<lowp_float>               lowp_vec2;
+00264 
+00269         typedef detail::tvec2<highp_int>                highp_ivec2;
+00270 
+00275         typedef detail::tvec2<mediump_int>              mediump_ivec2;
+00276 
+00281         typedef detail::tvec2<lowp_int>                 lowp_ivec2;
+00282         
+00287         typedef detail::tvec2<highp_uint>               highp_uvec2;
+00288 
+00293         typedef detail::tvec2<mediump_uint>             mediump_uvec2;
+00294 
+00299         typedef detail::tvec2<lowp_uint>                lowp_uvec2;
+00300 
+00301 }//namespace glm
+00302 
+00303 #ifndef GLM_EXTERNAL_TEMPLATE
+00304 #include "type_vec2.inl"
+00305 #endif//GLM_EXTERNAL_TEMPLATE
+00306 
+00307 #endif//glm_core_type_gentype2
+
+
+ + + diff --git a/doc/api-0.9.3/a00128.html b/doc/api-0.9.3/a00128.html new file mode 100644 index 00000000..53018975 --- /dev/null +++ b/doc/api-0.9.3/a00128.html @@ -0,0 +1,85 @@ + + + + +type_vec3.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_vec3.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

struct  tvec3< T >
 Basic 3D vector type. More...

+Typedefs

typedef detail::tvec3< highp_int > highp_ivec3
typedef detail::tvec3< highp_uint > highp_uvec3
typedef detail::tvec3
+< highp_float > 
highp_vec3
typedef detail::tvec3< lowp_int > lowp_ivec3
typedef detail::tvec3< lowp_uint > lowp_uvec3
typedef detail::tvec3< lowp_float > lowp_vec3
typedef detail::tvec3
+< mediump_int > 
mediump_ivec3
typedef detail::tvec3
+< mediump_uint > 
mediump_uvec3
typedef detail::tvec3
+< mediump_float > 
mediump_vec3
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-22 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_vec3.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00128_source.html b/doc/api-0.9.3/a00128_source.html new file mode 100644 index 00000000..7b056a46 --- /dev/null +++ b/doc/api-0.9.3/a00128_source.html @@ -0,0 +1,324 @@ + + + + +type_vec3.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_vec3.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_gentype3
+00030 #define glm_core_type_gentype3
+00031 
+00032 #include "type_vec.hpp"
+00033 #include "type_float.hpp"
+00034 #include "type_int.hpp"
+00035 #include "type_size.hpp"
+00036 #include "_swizzle.hpp"
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041         template <typename T> struct tref2;
+00042         template <typename T> struct tref3;
+00043         template <typename T> struct tref4;
+00044         template <typename T> struct tvec2;
+00045         template <typename T> struct tvec4;
+00046 
+00049         template <typename T>
+00050         struct tvec3
+00051         {       
+00052                 enum ctor{null};
+00053 
+00054                 typedef T value_type;
+00055                 typedef std::size_t size_type;
+00056                 GLM_FUNC_DECL size_type length() const;
+00057                 static GLM_FUNC_DECL size_type value_size();
+00058 
+00059                 typedef tvec3<T> type;
+00060                 typedef tvec3<bool> bool_type;
+00061 
+00063                 // Data
+00064 
+00065 #       if(GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE() && !defined(GLM_FORCE_ONLY_XYZW))
+00066                 union 
+00067                 {
+00068 #               if(defined(GLM_SWIZZLE))
+00069                         _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, x, y, z)
+00070                         _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, r, g, b)
+00071                         _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, s, t, p)
+00072                         _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, x, y, z)
+00073                         _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, r, g, b)
+00074                         _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, s, t, p)
+00075                         _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, x, y, z)
+00076                         _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, r, g, b)
+00077                         _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, s, t, p)
+00078 #               endif//(defined(GLM_SWIZZLE))
+00079 
+00080                         struct{value_type r, g, b;};
+00081                         struct{value_type s, t, p;};
+00082                         struct{value_type x, y, z;};
+00083                 };
+00084 #       elif(GLM_SUPPORT_ANONYMOUS_UNION() && !defined(GLM_FORCE_ONLY_XYZW))
+00085                 union {value_type x, r, s;};
+00086                 union {value_type y, g, t;};
+00087                 union {value_type z, b, p;};
+00088 
+00089 #               if(defined(GLM_SWIZZLE))
+00090                         // Defines all he swizzle operator as functions
+00091                         GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, detail::tvec3, detail::tref2, detail::tref3)
+00092                         GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4)
+00093 #               endif//(defined(GLM_SWIZZLE))
+00094 #       else
+00095                 value_type x, y, z;
+00096 
+00097 #               if(defined(GLM_SWIZZLE))
+00098                         // Defines all he swizzle operator as functions
+00099                         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, detail::tvec3, detail::tref2, detail::tref3, x, y, z)
+00100                         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4, x, y, z)
+00101 #               endif//(defined(GLM_SWIZZLE))
+00102 #       endif//GLM_COMPONENT
+00103 
+00105                 // Accesses
+00106 
+00107                 GLM_FUNC_DECL value_type & operator[](size_type i);
+00108                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
+00109 
+00111                 // Implicit basic constructors
+00112 
+00113                 GLM_FUNC_DECL tvec3();
+00114                 GLM_FUNC_DECL tvec3(tvec3<T> const & v);
+00115 
+00117                 // Explicit basic constructors
+00118 
+00119                 GLM_FUNC_DECL explicit tvec3(
+00120                         ctor);
+00121                 GLM_FUNC_DECL explicit tvec3(
+00122                         value_type const & s);
+00123                 GLM_FUNC_DECL explicit tvec3(
+00124                         value_type const & s1, 
+00125                         value_type const & s2, 
+00126                         value_type const & s3);
+00127 
+00129                 // Convertion scalar constructors
+00130 
+00132                 template <typename U> 
+00133                 GLM_FUNC_DECL explicit tvec3(
+00134                         U const & x);
+00136                 template <typename U, typename V, typename W> 
+00137                 GLM_FUNC_DECL explicit tvec3(
+00138                         U const & x, 
+00139                         V const & y, 
+00140                         W const & z);                   
+00141 
+00143                 // Convertion vector constructors
+00144 
+00146                 template <typename A, typename B> 
+00147                 GLM_FUNC_DECL explicit tvec3(tvec2<A> const & v, B const & s);
+00149                 template <typename A, typename B> 
+00150                 GLM_FUNC_DECL explicit tvec3(A const & s, tvec2<B> const & v);
+00152                 template <typename U> 
+00153                 GLM_FUNC_DECL explicit tvec3(tvec3<U> const & v);
+00155                 template <typename U> 
+00156                 GLM_FUNC_DECL explicit tvec3(tvec4<U> const & v);
+00157 
+00159                 // Swizzle constructors
+00160 
+00161                 GLM_FUNC_DECL tvec3(tref3<T> const & r);
+00162 
+00163                 template <typename A, typename B> 
+00164                 GLM_FUNC_DECL explicit tvec3(tref2<A> const & v, B const & s);
+00165 
+00166                 template <typename A, typename B> 
+00167                 GLM_FUNC_DECL explicit tvec3(A const & s, tref2<B> const & v);
+00168 
+00169         template <int E0, int E1, int E2>
+00170         GLM_FUNC_DECL tvec3(glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & that)
+00171         {
+00172             *this = that();
+00173         }
+00174 
+00175         template <int E0, int E1>
+00176         GLM_FUNC_DECL tvec3(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & s)
+00177         {
+00178             *this = tvec3<T>(v(), s);
+00179         }
+00180 
+00181         template <int E0, int E1>
+00182         GLM_FUNC_DECL tvec3(T const & s, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
+00183         {
+00184             *this = tvec3<T>(s, v());
+00185         }
+00186 
+00188                 // Unary arithmetic operators
+00189 
+00190                 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<T> const & v);
+00191                 template <typename U> 
+00192                 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<U> const & v);
+00193 
+00194                 template <typename U> 
+00195                 GLM_FUNC_DECL tvec3<T> & operator+=(U const & s);
+00196                 template <typename U> 
+00197                 GLM_FUNC_DECL tvec3<T> & operator+=(tvec3<U> const & v);
+00198                 template <typename U> 
+00199                 GLM_FUNC_DECL tvec3<T> & operator-=(U const & s);
+00200                 template <typename U> 
+00201                 GLM_FUNC_DECL tvec3<T> & operator-=(tvec3<U> const & v);
+00202                 template <typename U> 
+00203                 GLM_FUNC_DECL tvec3<T> & operator*=(U const & s);
+00204                 template <typename U> 
+00205                 GLM_FUNC_DECL tvec3<T> & operator*=(tvec3<U> const & v);
+00206                 template <typename U> 
+00207                 GLM_FUNC_DECL tvec3<T> & operator/=(U const & s);
+00208                 template <typename U> 
+00209                 GLM_FUNC_DECL tvec3<T> & operator/=(tvec3<U> const & v);
+00210                 GLM_FUNC_DECL tvec3<T> & operator++();
+00211                 GLM_FUNC_DECL tvec3<T> & operator--();
+00212 
+00214                 // Unary bit operators
+00215 
+00216                 template <typename U>
+00217                 GLM_FUNC_DECL tvec3<T> & operator%= (U const & s);
+00218                 template <typename U>
+00219                 GLM_FUNC_DECL tvec3<T> & operator%= (tvec3<U> const & v);
+00220                 template <typename U>
+00221                 GLM_FUNC_DECL tvec3<T> & operator&= (U const & s);
+00222                 template <typename U>
+00223                 GLM_FUNC_DECL tvec3<T> & operator&= (tvec3<U> const & v);
+00224                 template <typename U>
+00225                 GLM_FUNC_DECL tvec3<T> & operator|= (U const & s);
+00226                 template <typename U>
+00227                 GLM_FUNC_DECL tvec3<T> & operator|= (tvec3<U> const & v);
+00228                 template <typename U>
+00229                 GLM_FUNC_DECL tvec3<T> & operator^= (U const & s);
+00230                 template <typename U>
+00231                 GLM_FUNC_DECL tvec3<T> & operator^= (tvec3<U> const & v);
+00232                 template <typename U>
+00233                 GLM_FUNC_DECL tvec3<T> & operator<<=(U const & s);
+00234                 template <typename U>
+00235                 GLM_FUNC_DECL tvec3<T> & operator<<=(tvec3<U> const & v);
+00236                 template <typename U>
+00237                 GLM_FUNC_DECL tvec3<T> & operator>>=(U const & s);
+00238                 template <typename U>
+00239                 GLM_FUNC_DECL tvec3<T> & operator>>=(tvec3<U> const & v);
+00240 
+00242                 // Swizzle operators
+00243 
+00244                 GLM_FUNC_DECL value_type swizzle(comp X) const;
+00245                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
+00246                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
+00247                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
+00248                 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y);
+00249                 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z);
+00250         };
+00251 
+00252         template <typename T>
+00253         struct tref3
+00254         {
+00255                 GLM_FUNC_DECL tref3(T & x, T & y, T & z);
+00256                 GLM_FUNC_DECL tref3(tref3<T> const & r);
+00257                 GLM_FUNC_DECL explicit tref3(tvec3<T> const & v);
+00258 
+00259                 GLM_FUNC_DECL tref3<T> & operator= (tref3<T> const & r);
+00260                 GLM_FUNC_DECL tref3<T> & operator= (tvec3<T> const & v);
+00261 
+00262                 GLM_FUNC_DECL tvec3<T> operator() ();
+00263 
+00264                 T & x;
+00265                 T & y;
+00266                 T & z;
+00267         };
+00268 
+00269         GLM_DETAIL_IS_VECTOR(tvec3);
+00270 } //namespace detail
+00271 
+00276         typedef detail::tvec3<highp_float>              highp_vec3;
+00277 
+00282         typedef detail::tvec3<mediump_float>    mediump_vec3;
+00283 
+00288         typedef detail::tvec3<lowp_float>               lowp_vec3;
+00289 
+00294         typedef detail::tvec3<highp_int>                highp_ivec3;
+00295 
+00300         typedef detail::tvec3<mediump_int>              mediump_ivec3;
+00301 
+00306         typedef detail::tvec3<lowp_int>                 lowp_ivec3;
+00307 
+00312         typedef detail::tvec3<highp_uint>               highp_uvec3;
+00313 
+00318         typedef detail::tvec3<mediump_uint>             mediump_uvec3;
+00319 
+00324         typedef detail::tvec3<lowp_uint>                lowp_uvec3;
+00325 
+00326 }//namespace glm
+00327 
+00328 #ifndef GLM_EXTERNAL_TEMPLATE
+00329 #include "type_vec3.inl"
+00330 #endif//GLM_EXTERNAL_TEMPLATE
+00331 
+00332 #endif//glm_core_type_gentype3
+
+
+ + + diff --git a/doc/api-0.9.3/a00129.html b/doc/api-0.9.3/a00129.html new file mode 100644 index 00000000..4419ef1f --- /dev/null +++ b/doc/api-0.9.3/a00129.html @@ -0,0 +1,85 @@ + + + + +type_vec4.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

type_vec4.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

struct  tvec4< T >
 Basic 4D vector type. More...

+Typedefs

typedef detail::tvec4< highp_int > highp_ivec4
typedef detail::tvec4< highp_uint > highp_uvec4
typedef detail::tvec4
+< highp_float > 
highp_vec4
typedef detail::tvec4< lowp_int > lowp_ivec4
typedef detail::tvec4< lowp_uint > lowp_uvec4
typedef detail::tvec4< lowp_float > lowp_vec4
typedef detail::tvec4
+< mediump_int > 
mediump_ivec4
typedef detail::tvec4
+< mediump_uint > 
mediump_uvec4
typedef detail::tvec4
+< mediump_float > 
mediump_vec4
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date:
2008-08-22 / 2011-06-15
+
Author:
Christophe Riccio
+ +

Definition in file type_vec4.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00129_source.html b/doc/api-0.9.3/a00129_source.html new file mode 100644 index 00000000..979e7c55 --- /dev/null +++ b/doc/api-0.9.3/a00129_source.html @@ -0,0 +1,370 @@ + + + + +type_vec4.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

type_vec4.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 #ifndef glm_core_type_gentype4
+00030 #define glm_core_type_gentype4
+00031 
+00032 #include "type_vec.hpp"
+00033 #include "type_float.hpp"
+00034 #include "type_int.hpp"
+00035 #include "type_size.hpp"
+00036 #include "_swizzle.hpp"
+00037 
+00038 namespace glm{
+00039 namespace detail
+00040 {
+00041         template <typename T> struct tref2;
+00042         template <typename T> struct tref3;
+00043         template <typename T> struct tref4;
+00044         template <typename T> struct tvec2;
+00045         template <typename T> struct tvec3;
+00046 
+00049         template <typename T>
+00050         struct tvec4
+00051         {
+00052                 enum ctor{null};
+00053 
+00054                 typedef T value_type;
+00055                 typedef std::size_t size_type;
+00056                 GLM_FUNC_DECL size_type length() const;
+00057                 static GLM_FUNC_DECL size_type value_size();
+00058 
+00059                 typedef tvec4<T> type;
+00060                 typedef tvec4<bool> bool_type;
+00061 
+00063                 // Data
+00064 
+00065 #       if(GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE() && !defined(GLM_FORCE_ONLY_XYZW))
+00066                 union 
+00067                 {
+00068 #               if(defined(GLM_SWIZZLE))
+00069                         _GLM_SWIZZLE4_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, x, y, z, w)
+00070                         _GLM_SWIZZLE4_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, r, g, b, a)
+00071                         _GLM_SWIZZLE4_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, s, t, p, q)
+00072                         _GLM_SWIZZLE4_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, x, y, z, w)
+00073                         _GLM_SWIZZLE4_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, r, g, b, a)
+00074                         _GLM_SWIZZLE4_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, s, t, p, q)
+00075                         _GLM_SWIZZLE4_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, x, y, z, w)
+00076                         _GLM_SWIZZLE4_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, r, g, b, a)
+00077                         _GLM_SWIZZLE4_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, s, t, p, q)
+00078 #               endif//(defined(GLM_SWIZZLE))
+00079 
+00080                         struct{value_type r, g, b, a;};
+00081                         struct{value_type s, t, p, q;};
+00082                         struct{value_type x, y, z, w;};
+00083                 };
+00084 #       elif(GLM_SUPPORT_ANONYMOUS_UNION() && !defined(GLM_FORCE_ONLY_XYZW))
+00085                 union {value_type x, r, s;};
+00086                 union {value_type y, g, t;};
+00087                 union {value_type z, b, p;};
+00088                 union {value_type w, a, q;};
+00089 
+00090 #               if(defined(GLM_SWIZZLE))
+00091                         // Defines all he swizzle operator as functions
+00092                         GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, detail::tvec4, detail::tref2, detail::tref3, detail::tref4)
+00093                         GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, detail::tvec4, detail::tvec2, detail::tvec3, detail::tvec4)
+00094 #               endif//(defined(GLM_SWIZZLE))
+00095 #       else
+00096                 value_type x, y, z, w;
+00097 
+00098 #               if(defined(GLM_SWIZZLE))
+00099                         // Defines all he swizzle operator as functions
+00100                         GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, detail::tvec4, detail::tref2, detail::tref3, detail::tref4, x, y, z, w)
+00101                         GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, detail::tvec4, detail::tvec2, detail::tvec3, detail::tvec4, x, y, z, w)
+00102 #               endif//(defined(GLM_SWIZZLE))
+00103 #       endif//GLM_COMPONENT
+00104 
+00106                 // Accesses
+00107 
+00108                 GLM_FUNC_DECL value_type & operator[](size_type i);
+00109                 GLM_FUNC_DECL value_type const & operator[](size_type i) const;
+00110 
+00112                 // Implicit basic constructors
+00113 
+00114                 GLM_FUNC_DECL tvec4();
+00115                 GLM_FUNC_DECL tvec4(type const & v);
+00116 
+00118                 // Explicit basic constructors
+00119 
+00120                 GLM_FUNC_DECL explicit tvec4(
+00121                         ctor);
+00122                 GLM_FUNC_DECL explicit tvec4(
+00123                         value_type const & s);
+00124                 GLM_FUNC_DECL explicit tvec4(
+00125                         value_type const & s0, 
+00126                         value_type const & s1, 
+00127                         value_type const & s2, 
+00128                         value_type const & s3);
+00129 
+00131                 // Convertion scalar constructors
+00132 
+00134                 template <typename U> 
+00135                 GLM_FUNC_DECL explicit tvec4(
+00136                         U const & x);
+00138                 template <typename A, typename B, typename C, typename D> 
+00139                 GLM_FUNC_DECL explicit tvec4(
+00140                         A const & x, 
+00141                         B const & y, 
+00142                         C const & z, 
+00143                         D const & w);                   
+00144 
+00146                 // Convertion vector constructors
+00147 
+00149                 template <typename A, typename B, typename C> 
+00150                 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2);
+00152                 template <typename A, typename B, typename C> 
+00153                 GLM_FUNC_DECL explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2);
+00155                 template <typename A, typename B, typename C> 
+00156                 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v);
+00158                 template <typename A, typename B> 
+00159                 GLM_FUNC_DECL explicit tvec4(tvec3<A> const & v, B const & s);
+00161                 template <typename A, typename B> 
+00162                 GLM_FUNC_DECL explicit tvec4(A const & s, tvec3<B> const & v);
+00164                 template <typename A, typename B> 
+00165                 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2);
+00167                 template <typename U> 
+00168                 GLM_FUNC_DECL explicit tvec4(tvec4<U> const & v);
+00169 
+00170         template <int E0, int E1, int E2, int E3>
+00171         GLM_FUNC_DECL tvec4(glm::detail::swizzle<4, T, tvec4<T>, E0, E1, E2, E3> const & that)
+00172         {
+00173             *this = that();
+00174         }
+00175 
+00176         template <int E0, int E1, int F0, int F1>
+00177         GLM_FUNC_DECL tvec4(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, glm::detail::swizzle<2, T, tvec2<T>, F0, F1, -1, -2> const & u)
+00178         {
+00179             *this = tvec4<T>(v(), u());
+00180         }
+00181 
+00182         template <int E0, int E1>
+00183         GLM_FUNC_DECL tvec4(T const & x, T const & y, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v)
+00184         {
+00185             *this = tvec4<T>(x, y, v());
+00186         }
+00187 
+00188         template <int E0, int E1>
+00189         GLM_FUNC_DECL tvec4(T const & x, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & w)
+00190         {
+00191             *this = tvec4<T>(x, v(), w);
+00192         }
+00193 
+00194         template <int E0, int E1>
+00195         GLM_FUNC_DECL tvec4(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & z, T const & w)
+00196         {
+00197             *this = tvec4<T>(v(), z, w);
+00198         }
+00199 
+00200         template <int E0, int E1, int E2>
+00201         GLM_FUNC_DECL tvec4(glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v, T const & w)
+00202         {
+00203             *this = tvec4<T>(v(), w);
+00204         }
+00205 
+00206         template <int E0, int E1, int E2>
+00207         GLM_FUNC_DECL tvec4(T const & x, glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v)
+00208         {
+00209             *this = tvec4<T>(x, v());
+00210         }
+00211 
+00213                 // Swizzle constructors
+00214 
+00215                 GLM_FUNC_DECL tvec4(tref4<T> const & r);
+00216 
+00218                 template <typename A, typename B, typename C> 
+00219                 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v, B const & s1, C const & s2);
+00221                 template <typename A, typename B, typename C> 
+00222                 GLM_FUNC_DECL explicit tvec4(A const & s1, tref2<B> const & v, C const & s2);
+00224                 template <typename A, typename B, typename C> 
+00225                 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tref2<C> const & v);
+00227                 template <typename A, typename B> 
+00228                 GLM_FUNC_DECL explicit tvec4(tref3<A> const & v, B const & s);
+00230                 template <typename A, typename B> 
+00231                 GLM_FUNC_DECL explicit tvec4(A const & s, tref3<B> const & v);
+00233                 template <typename A, typename B> 
+00234                 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tref2<B> const & v2);
+00236                 template <typename A, typename B> 
+00237                 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tref2<B> const & v2);
+00239                 template <typename A, typename B> 
+00240                 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tvec2<B> const & v2);
+00241 
+00243                 // Unary arithmetic operators
+00244 
+00245                 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<T> const & v);
+00246                 template <typename U>
+00247                 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<U> const & v);
+00248 
+00249                 template <typename U>
+00250                 GLM_FUNC_DECL tvec4<T> & operator+=(U const & s);
+00251                 template <typename U>
+00252                 GLM_FUNC_DECL tvec4<T> & operator+=(tvec4<U> const & v);
+00253                 template <typename U>
+00254                 GLM_FUNC_DECL tvec4<T> & operator-=(U const & s);
+00255                 template <typename U>
+00256                 GLM_FUNC_DECL tvec4<T> & operator-=(tvec4<U> const & v);
+00257                 template <typename U>
+00258                 GLM_FUNC_DECL tvec4<T> & operator*=(U const & s);
+00259                 template <typename U>
+00260                 GLM_FUNC_DECL tvec4<T> & operator*=(tvec4<U> const & v);
+00261                 template <typename U>
+00262                 GLM_FUNC_DECL tvec4<T> & operator/=(U const & s);
+00263                 template <typename U>
+00264                 GLM_FUNC_DECL tvec4<T> & operator/=(tvec4<U> const & v);
+00265                 GLM_FUNC_DECL tvec4<T> & operator++();
+00266                 GLM_FUNC_DECL tvec4<T> & operator--();
+00267 
+00269                 // Unary bit operators
+00270 
+00271                 template <typename U>
+00272                 GLM_FUNC_DECL tvec4<T> & operator%= (U const & s);
+00273                 template <typename U>
+00274                 GLM_FUNC_DECL tvec4<T> & operator%= (tvec4<U> const & v);
+00275                 template <typename U>
+00276                 GLM_FUNC_DECL tvec4<T> & operator&= (U const & s);
+00277                 template <typename U>
+00278                 GLM_FUNC_DECL tvec4<T> & operator&= (tvec4<U> const & v);
+00279                 template <typename U>
+00280                 GLM_FUNC_DECL tvec4<T> & operator|= (U const & s);
+00281                 template <typename U>
+00282                 GLM_FUNC_DECL tvec4<T> & operator|= (tvec4<U> const & v);
+00283                 template <typename U>
+00284                 GLM_FUNC_DECL tvec4<T> & operator^= (U const & s);
+00285                 template <typename U>
+00286                 GLM_FUNC_DECL tvec4<T> & operator^= (tvec4<U> const & v);
+00287                 template <typename U>
+00288                 GLM_FUNC_DECL tvec4<T> & operator<<=(U const & s);
+00289                 template <typename U>
+00290                 GLM_FUNC_DECL tvec4<T> & operator<<=(tvec4<U> const & v);
+00291                 template <typename U>
+00292                 GLM_FUNC_DECL tvec4<T> & operator>>=(U const & s);
+00293                 template <typename U>
+00294                 GLM_FUNC_DECL tvec4<T> & operator>>=(tvec4<U> const & v);
+00295 
+00297                 // Swizzle operators
+00298 
+00299                 GLM_FUNC_DECL value_type swizzle(comp X) const;
+00300                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const;
+00301                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const;
+00302                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const;
+00303                 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y);
+00304                 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z);
+00305                 GLM_FUNC_DECL tref4<T> swizzle(comp X, comp Y, comp Z, comp W);
+00306         };
+00307 
+00308         template <typename T>
+00309         struct tref4
+00310         {
+00311                 GLM_FUNC_DECL tref4(T & x, T & y, T & z, T & w);
+00312                 GLM_FUNC_DECL tref4(tref4<T> const & r);
+00313                 GLM_FUNC_DECL explicit tref4(tvec4<T> const & v);
+00314 
+00315                 GLM_FUNC_DECL tref4<T> & operator= (tref4<T> const & r);
+00316                 GLM_FUNC_DECL tref4<T> & operator= (tvec4<T> const & v);
+00317 
+00318                 GLM_FUNC_DECL tvec4<T> operator() ();
+00319 
+00320                 T & x;
+00321                 T & y;
+00322                 T & z;
+00323                 T & w;
+00324         };
+00325 
+00326         GLM_DETAIL_IS_VECTOR(tvec4);
+00327 }//namespace detail
+00328 
+00333         typedef detail::tvec4<highp_float>              highp_vec4;
+00334 
+00339         typedef detail::tvec4<mediump_float>    mediump_vec4;
+00340 
+00345         typedef detail::tvec4<lowp_float>               lowp_vec4;
+00346 
+00351         typedef detail::tvec4<highp_int>                highp_ivec4;
+00352 
+00357         typedef detail::tvec4<mediump_int>              mediump_ivec4;
+00358 
+00363         typedef detail::tvec4<lowp_int>                 lowp_ivec4;
+00364 
+00369         typedef detail::tvec4<highp_uint>               highp_uvec4;
+00370 
+00375         typedef detail::tvec4<mediump_uint>             mediump_uvec4;
+00376 
+00381         typedef detail::tvec4<lowp_uint>                lowp_uvec4;
+00382 
+00383 }//namespace glm
+00384 
+00385 #ifndef GLM_EXTERNAL_TEMPLATE
+00386 #include "type_vec4.inl"
+00387 #endif//GLM_EXTERNAL_TEMPLATE
+00388 
+00389 #endif//glm_core_type_gentype4
+
+
+ + + diff --git a/doc/api-0.9.3/a00130.html b/doc/api-0.9.3/a00130.html new file mode 100644 index 00000000..faf14e58 --- /dev/null +++ b/doc/api-0.9.3/a00130.html @@ -0,0 +1,80 @@ + + + + +ulp.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

ulp.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T >
uint float_distance (T const &x, T const &y)
template<typename T , template< typename > class vecType>
vecType< uint > float_distance (vecType< T > const &x, vecType< T > const &y)
template<typename genType >
genType next_float (genType const &x)
template<typename genType >
genType next_float (genType const &x, uint const &Distance)
template<typename genType >
genType prev_float (genType const &x, uint const &Distance)
template<typename genType >
genType prev_float (genType const &x)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_ulp: Accuracy measurement

+
Date:
2011-02-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file ulp.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00130_source.html b/doc/api-0.9.3/a00130_source.html new file mode 100644 index 00000000..5fed3e4b --- /dev/null +++ b/doc/api-0.9.3/a00130_source.html @@ -0,0 +1,121 @@ + + + + +ulp.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

ulp.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_GTX_ulp
+00040 #define GLM_GTX_ulp GLM_VERSION
+00041 
+00042 // Dependency:
+00043 #include "../glm.hpp"
+00044 
+00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00046 #       pragma message("GLM: GLM_GTX_ulp extension included")
+00047 #endif
+00048 
+00049 namespace glm
+00050 {
+00053 
+00056     template <typename genType>
+00057     genType next_float(genType const & x);
+00058         
+00061     template <typename genType>
+00062     genType prev_float(genType const & x);
+00063 
+00066     template <typename genType>
+00067     genType next_float(genType const & x, uint const & Distance);
+00068         
+00071     template <typename genType>
+00072     genType prev_float(genType const & x, uint const & Distance);
+00073         
+00076     template <typename T>
+00077     uint float_distance(T const & x, T const & y);
+00078         
+00081     template<typename T, template<typename> class vecType>
+00082     vecType<uint> float_distance(vecType<T> const & x, vecType<T> const & y);
+00083         
+00085 }// namespace glm
+00086 
+00087 #include "ulp.inl"
+00088 
+00089 #endif//GLM_GTX_ulp
+00090 
+
+
+ + + diff --git a/doc/api-0.9.2/a00034_source.html b/doc/api-0.9.3/a00131_source.html similarity index 50% rename from doc/api-0.9.2/a00034_source.html rename to doc/api-0.9.3/a00131_source.html index bdad3d3a..a3b39186 100644 --- a/doc/api-0.9.2/a00034_source.html +++ b/doc/api-0.9.3/a00131_source.html @@ -2,18 +2,18 @@ -coreModules.doxy Source File +unsigned_int.hpp Source File - +
- +
@@ -21,8 +21,8 @@
-
coreModules.doxy
+

unsigned_int.hpp

00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 #if(defined(GLM_MESSAGES))
+00025 #       pragma message("GLM: GLM_GTX_unsigned_int extension is deprecated, include GLM_GTX_integer instead")
+00026 #endif
 
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00132.html b/doc/api-0.9.3/a00132.html new file mode 100644 index 00000000..55543dcc --- /dev/null +++ b/doc/api-0.9.3/a00132.html @@ -0,0 +1,81 @@ + + + + +vec1.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

vec1.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Typedefs

typedef detail::tvec1< bool > bvec1
typedef detail::highp_ivec1_t highp_ivec1
typedef detail::highp_uvec1_t highp_uvec1
typedef detail::highp_vec1_t highp_vec1
typedef mediump_ivec1 ivec1
typedef detail::lowp_ivec1_t lowp_ivec1
typedef detail::lowp_uvec1_t lowp_uvec1
typedef detail::lowp_vec1_t lowp_vec1
typedef detail::mediump_ivec1_t mediump_ivec1
typedef detail::mediump_uvec1_t mediump_uvec1
typedef detail::mediump_vec1_t mediump_vec1
typedef mediump_uvec1 uvec1
typedef mediump_vec1 vec1
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_vec1: Add vec1 types

+
Date:
2010-02-08 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file vec1.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00132_source.html b/doc/api-0.9.3/a00132_source.html new file mode 100644 index 00000000..e5d87831 --- /dev/null +++ b/doc/api-0.9.3/a00132_source.html @@ -0,0 +1,153 @@ + + + + +vec1.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

vec1.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 #ifndef GLM_GTX_vec1
+00038 #define GLM_GTX_vec1 GLM_VERSION
+00039 
+00040 // Dependency:
+00041 #include "../glm.hpp"
+00042 #include "../core/type_vec1.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_vec1 extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00053         typedef detail::highp_vec1_t                    highp_vec1;
+00057         typedef detail::mediump_vec1_t                  mediump_vec1;
+00061         typedef detail::lowp_vec1_t                             lowp_vec1;
+00062 
+00066         typedef detail::highp_ivec1_t                   highp_ivec1;
+00070         typedef detail::mediump_ivec1_t                 mediump_ivec1;
+00074         typedef detail::lowp_ivec1_t                    lowp_ivec1;
+00075 
+00079         typedef detail::highp_uvec1_t                   highp_uvec1;
+00083         typedef detail::mediump_uvec1_t                 mediump_uvec1;
+00087         typedef detail::lowp_uvec1_t                    lowp_uvec1;
+00088 
+00090         // vec1 definition
+00091 
+00094         typedef detail::tvec1<bool>     bvec1;
+00095 
+00096 #if(defined(GLM_PRECISION_HIGHP_FLOAT))
+00097         typedef highp_vec1                      vec1;
+00098 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+00099         typedef mediump_vec1                    vec1;
+00100 #elif(defined(GLM_PRECISION_LOWP_FLOAT))
+00101         typedef lowp_vec1                       vec1;
+00102 #else
+00103 
+00104 
+00105         typedef mediump_vec1                    vec1;
+00106 #endif//GLM_PRECISION
+00107 
+00108 #if(defined(GLM_PRECISION_HIGHP_INT))
+00109         typedef highp_ivec1                     ivec1;
+00110 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+00111         typedef mediump_ivec1           ivec1;
+00112 #elif(defined(GLM_PRECISION_LOWP_INT))
+00113         typedef lowp_ivec1                      ivec1;
+00114 #else
+00115 
+00116 
+00117         typedef mediump_ivec1           ivec1;
+00118 #endif//GLM_PRECISION
+00119 
+00120 #if(defined(GLM_PRECISION_HIGHP_UINT))
+00121         typedef highp_uvec1                     uvec1;
+00122 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
+00123         typedef mediump_uvec1           uvec1;
+00124 #elif(defined(GLM_PRECISION_LOWP_UINT))
+00125         typedef lowp_uvec1                      uvec1;
+00126 #else
+00127 
+00128 
+00129         typedef mediump_uvec1           uvec1;
+00130 #endif//GLM_PRECISION
+00131 
+00132 }// namespace glm
+00133 
+00134 #include "vec1.inl"
+00135 
+00136 #endif//GLM_GTX_vec1
+00137 
+
+
+ + + diff --git a/doc/api-0.9.3/a00133.html b/doc/api-0.9.3/a00133.html new file mode 100644 index 00000000..ee114f82 --- /dev/null +++ b/doc/api-0.9.3/a00133.html @@ -0,0 +1,74 @@ + + + + +vector_access.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

vector_access.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename valType >
void set (detail::tvec2< valType > &v, valType const &x, valType const &y)
template<typename valType >
void set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w)
template<typename valType >
void set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_vector_access: Vector access

+
Date:
2006-01-16 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file vector_access.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00133_source.html b/doc/api-0.9.3/a00133_source.html new file mode 100644 index 00000000..2dbcb6c0 --- /dev/null +++ b/doc/api-0.9.3/a00133_source.html @@ -0,0 +1,122 @@ + + + + +vector_access.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

vector_access.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_vector_access
+00039 #define GLM_GTX_vector_access GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_vector_access extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055     template <typename valType> 
+00056         void set(
+00057                 detail::tvec2<valType> & v, 
+00058                 valType const & x, 
+00059                 valType const & y);
+00060 
+00063     template <typename valType> 
+00064         void set(
+00065                 detail::tvec3<valType> & v, 
+00066                 valType const & x, 
+00067                 valType const & y, 
+00068                 valType const & z);
+00069 
+00072     template <typename valType> 
+00073         void set(
+00074                 detail::tvec4<valType> & v, 
+00075                 valType const & x, 
+00076                 valType const & y, 
+00077                 valType const & z, 
+00078                 valType const & w);
+00079 
+00081 }//namespace glm
+00082 
+00083 #include "vector_access.inl"
+00084 
+00085 #endif//GLM_GTX_vector_access
+
+
+ + + diff --git a/doc/api-0.9.3/a00134.html b/doc/api-0.9.3/a00134.html new file mode 100644 index 00000000..bee4ac67 --- /dev/null +++ b/doc/api-0.9.3/a00134.html @@ -0,0 +1,79 @@ + + + + +vector_angle.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

vector_angle.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename vecType >
GLM_FUNC_QUALIFIER
+vecType::value_type 
angle (vecType const &x, vecType const &y)
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > const &ref)
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec2< T > const &x, detail::tvec2< T > const &y)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_vector_angle: Vector angle

+
Date:
2005-12-30 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+
+GLM_GTX_quaternion: Extented quaternion types and functions (dependence)
+
+GLM_GTX_epsilon: Epsilon comparison (dependence)
+ +

Definition in file vector_angle.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00134_source.html b/doc/api-0.9.3/a00134_source.html new file mode 100644 index 00000000..0bfb238b --- /dev/null +++ b/doc/api-0.9.3/a00134_source.html @@ -0,0 +1,122 @@ + + + + +vector_angle.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

vector_angle.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 #ifndef GLM_GTX_vector_angle
+00041 #define GLM_GTX_vector_angle GLM_VERSION
+00042 
+00043 // Dependency:
+00044 #include "../glm.hpp"
+00045 #include "../gtx/epsilon.hpp"
+00046 #include "../gtx/quaternion.hpp"
+00047 #include "../gtx/rotate_vector.hpp"
+00048 
+00049 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00050 #       pragma message("GLM: GLM_GTX_vector_angle extension included")
+00051 #endif
+00052 
+00053 namespace glm
+00054 {
+00057 
+00061         template <typename vecType> 
+00062         GLM_FUNC_QUALIFIER typename vecType::value_type angle(
+00063                 vecType const & x, 
+00064                 vecType const & y);
+00065 
+00069         template <typename T> 
+00070         GLM_FUNC_QUALIFIER T orientedAngle(
+00071                 detail::tvec2<T> const & x, 
+00072                 detail::tvec2<T> const & y);
+00073 
+00077         template <typename T>
+00078         GLM_FUNC_QUALIFIER T orientedAngle(
+00079                 detail::tvec3<T> const & x,
+00080                 detail::tvec3<T> const & y,
+00081                 detail::tvec3<T> const & ref);
+00082 
+00084 }// namespace glm
+00085 
+00086 #include "vector_angle.inl"
+00087 
+00088 #endif//GLM_GTX_vector_angle
+
+
+ + + diff --git a/doc/api-0.9.2/a00227.html b/doc/api-0.9.3/a00135.html similarity index 58% rename from doc/api-0.9.2/a00227.html rename to doc/api-0.9.3/a00135.html index f1f06aba..7071dfd7 100644 --- a/doc/api-0.9.2/a00227.html +++ b/doc/api-0.9.3/a00135.html @@ -2,18 +2,18 @@ -glm::gtx::vector_query Namespace Reference +vector_query.hpp File Reference - +
@@ -45,35 +37,46 @@
-
glm::gtx::vector_query Namespace Reference
+

vector_query.hpp File Reference

-

< GLM_GTX_vector_query extension: Query informations of vector types -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- + - + - + - + - + - + - +

Functions

template<typename genType >
bool areCollinear (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areCollinear (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areOpposite (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areOpposite (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areSimilar (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areSimilar (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool isNormalized (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool isNormalized (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool isNull (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool isNull (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
-

Detailed Description

-

< GLM_GTX_vector_query extension: Query informations of vector types

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_vector_query: Vector query

+
Date:
2008-03-10 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file vector_query.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00135_source.html b/doc/api-0.9.3/a00135_source.html new file mode 100644 index 00000000..04f6d78b --- /dev/null +++ b/doc/api-0.9.3/a00135_source.html @@ -0,0 +1,143 @@ + + + + +vector_query.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

vector_query.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_vector_query
+00039 #define GLM_GTX_vector_query GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 #include <cfloat>
+00044 #include <limits>
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_GTX_vector_query extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00054 
+00057         template <typename genType> 
+00058         bool areCollinear(
+00059                 genType const & v0, 
+00060                 genType const & v1, 
+00061                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00062                 
+00065         template <typename genType> 
+00066         bool areOpposite(
+00067                 genType const & v0, 
+00068                 genType const & v1, 
+00069                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00070                 
+00073         template <typename genType> 
+00074         bool areOrthogonal(
+00075                 genType const & v0, 
+00076                 genType const & v1, 
+00077                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00078 
+00081         template <typename genType> 
+00082         bool isNormalized(
+00083                 genType const & v, 
+00084                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00085                 
+00088         template <typename genType> 
+00089         bool isNull(
+00090                 genType const & v, 
+00091                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00092 
+00095         template <typename genType>
+00096         bool areOrthonormal(
+00097                 genType const & v0, 
+00098                 genType const & v1, 
+00099                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00100 
+00103         template <typename genType> 
+00104         bool areSimilar(
+00105                 genType const & v0, 
+00106                 genType const & v1, 
+00107                 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
+00108 
+00110 }// namespace glm
+00111 
+00112 #include "vector_query.inl"
+00113 
+00114 #endif//GLM_GTX_vector_query
+
+
+ + + diff --git a/doc/api-0.9.2/a00228.html b/doc/api-0.9.3/a00136.html similarity index 51% rename from doc/api-0.9.2/a00228.html rename to doc/api-0.9.3/a00136.html index d638fe3d..5addf4c1 100644 --- a/doc/api-0.9.2/a00228.html +++ b/doc/api-0.9.3/a00136.html @@ -2,18 +2,18 @@ -glm::gtx::verbose_operator Namespace Reference +verbose_operator.hpp File Reference - +
@@ -45,31 +37,42 @@
-
glm::gtx::verbose_operator Namespace Reference
+

verbose_operator.hpp File Reference

-

< GLM_GTX_verbose_operator extension: Use words to replace operators -More...

+

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

- + - + - + - + - +

Functions

template<typename genTypeT , typename genTypeU >
genTypeT add (genTypeT const &a, genTypeU const &b)
genTypeT add (genTypeT const &a, genTypeU const &b)
template<typename genTypeT , typename genTypeU >
genTypeT div (genTypeT const &a, genTypeU const &b)
genTypeT div (genTypeT const &a, genTypeU const &b)
template<typename genTypeT , typename genTypeU , typename genTypeV >
genTypeT mad (genTypeT const &a, genTypeU const &b, genTypeV const &c)
genTypeT mad (genTypeT const &a, genTypeU const &b, genTypeV const &c)
template<typename genTypeT , typename genTypeU >
genTypeT mul (genTypeT const &a, genTypeU const &b)
genTypeT mul (genTypeT const &a, genTypeU const &b)
template<typename genTypeT , typename genTypeU >
genTypeT sub (genTypeT const &a, genTypeU const &b)
genTypeT sub (genTypeT const &a, genTypeU const &b)
-

Detailed Description

-

< GLM_GTX_verbose_operator extension: Use words to replace operators

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_verbose_operator: Verbose operator

+
Date:
2007-05-21 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file verbose_operator.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00136_source.html b/doc/api-0.9.3/a00136_source.html new file mode 100644 index 00000000..3a29f2a9 --- /dev/null +++ b/doc/api-0.9.3/a00136_source.html @@ -0,0 +1,116 @@ + + + + +verbose_operator.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

verbose_operator.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_verbose_operator
+00039 #define GLM_GTX_verbose_operator GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_verbose_operator extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename genTypeT, typename genTypeU> 
+00056         genTypeT add(genTypeT const & a, genTypeU const & b);
+00057 
+00060         template <typename genTypeT, typename genTypeU> 
+00061         genTypeT sub(genTypeT const & a, genTypeU const & b);
+00062 
+00065         template <typename genTypeT, typename genTypeU> 
+00066         genTypeT mul(genTypeT const & a, genTypeU const & b);
+00067 
+00070         template <typename genTypeT, typename genTypeU> 
+00071         genTypeT div(genTypeT const & a, genTypeU const & b);
+00072 
+00075         template <typename genTypeT, typename genTypeU, typename genTypeV> 
+00076         genTypeT mad(genTypeT const & a, genTypeU const & b, genTypeV const & c);
+00077 
+00079 }// namespace glm
+00080 
+00081 #include "verbose_operator.inl"
+00082 
+00083 #endif//GLM_GTX_verbose_operator
+
+
+ + + diff --git a/doc/api-0.9.3/a00137.html b/doc/api-0.9.3/a00137.html new file mode 100644 index 00000000..c2dc2c94 --- /dev/null +++ b/doc/api-0.9.3/a00137.html @@ -0,0 +1,74 @@ + + + + +wrap.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+ +
+

wrap.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename genType >
genType clamp (genType const &Texcoord)
template<typename genType >
genType mirrorRepeat (genType const &Texcoord)
template<typename genType >
genType repeat (genType const &Texcoord)
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_wrap: Texture coordinate wrap modes

+
Date:
2009-11-25 / 2011-06-07
+
Author:
Christophe Riccio
+
See also:
GLM Core (dependence)
+ +

Definition in file wrap.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00137_source.html b/doc/api-0.9.3/a00137_source.html new file mode 100644 index 00000000..42ac914c --- /dev/null +++ b/doc/api-0.9.3/a00137_source.html @@ -0,0 +1,110 @@ + + + + +wrap.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

wrap.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 #ifndef GLM_GTX_wrap
+00039 #define GLM_GTX_wrap GLM_VERSION
+00040 
+00041 // Dependency:
+00042 #include "../glm.hpp"
+00043 
+00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00045 #       pragma message("GLM: GLM_GTX_wrap extension included")
+00046 #endif
+00047 
+00048 namespace glm
+00049 {
+00052 
+00055         template <typename genType> 
+00056         genType clamp(genType const & Texcoord);
+00057 
+00060         template <typename genType> 
+00061         genType repeat(genType const & Texcoord);
+00062 
+00065         template <typename genType> 
+00066         genType mirrorRepeat(genType const & Texcoord);
+00067 
+00069 }// namespace glm
+00070 
+00071 #include "wrap.inl"
+00072 
+00073 #endif//GLM_GTX_wrap
+
+
+ + + diff --git a/doc/api-0.9.3/a00138.html b/doc/api-0.9.3/a00138.html new file mode 100644 index 00000000..06df204f --- /dev/null +++ b/doc/api-0.9.3/a00138.html @@ -0,0 +1,66 @@ + + + + +xstream.hpp File Reference + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

xstream.hpp File Reference

+
+
+ +

OpenGL Mathematics (glm.g-truc.net) +More...

+ +

Go to the source code of this file.

+ +
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_VIRTREV_xstream: xml like output

+
Date:
2008-05-24 / 2008-05-26
+
Author:
Mathieu Roumillac (matrem84.free.fr)
+
See also:
GLM Core (dependence)
+
+GLM_GTC_matrix_access: Access matrix rows and columns (dependence)
+ +

Definition in file xstream.hpp.

+
+ + + diff --git a/doc/api-0.9.3/a00138_source.html b/doc/api-0.9.3/a00138_source.html new file mode 100644 index 00000000..790c8f9b --- /dev/null +++ b/doc/api-0.9.3/a00138_source.html @@ -0,0 +1,210 @@ + + + + +xstream.hpp Source File + + + + + +
+
+ + + + + + +
+
+ + +
+
+

xstream.hpp

+
+
+Go to the documentation of this file.
00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 #ifndef GLM_VIRTREV_xstream
+00040 #define GLM_VIRTREV_xstream GLM_VERSION
+00041 
+00042 #include "../glm.hpp"
+00043 #include "../gtc/matrix_access.hpp"
+00044 #include <iostream>
+00045 
+00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+00047 #       pragma message("GLM: GLM_VIRTREV_xstream extension included")
+00048 #endif
+00049 
+00050 namespace glm
+00051 {
+00052         template<typename T>
+00053         std::ostream & operator << (std::ostream & stream, glm::detail::tvec2<T> const & vec)
+00054         {
+00055                 stream << "<glm_vec2 ";
+00056                 stream << "x=\"" << vec.x << "\" ";
+00057                 stream << "y=\"" << vec.y << "\" ";
+00058                 stream << "/>";
+00059 
+00060                 return stream;
+00061         }
+00062 
+00063         template<typename T>
+00064         std::ostream & operator << (std::ostream & stream, glm::detail::tvec3<T> const & vec)
+00065         {
+00066                 stream << "<glm_vec3 ";
+00067                 stream << "x=\"" << vec.x << "\" ";
+00068                 stream << "y=\"" << vec.y << "\" ";
+00069                 stream << "z=\"" << vec.z << "\" ";
+00070                 stream << "/>";
+00071 
+00072                 return stream;
+00073         }
+00074 
+00075         template<typename T>
+00076         std::ostream & operator << (std::ostream & stream, glm::detail::tvec4<T> const & vec)
+00077         {
+00078                 stream << "<glm_vec4 ";
+00079                 stream << "x=\"" << vec.x << "\" ";
+00080                 stream << "y=\"" << vec.y << "\" ";
+00081                 stream << "z=\"" << vec.z << "\" ";
+00082                 stream << "w=\"" << vec.w << "\" ";
+00083                 stream << "/>";
+00084 
+00085                 return stream;
+00086         }
+00087 
+00088         template<typename T>
+00089         std::ostream & operator << (std::ostream & stream, glm::detail::tmat2x2<T> const & mat)
+00090         {
+00091                 stream << "<glm_mat2>" << std::endl;
+00092                 stream << "<row ";
+00093                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
+00094                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
+00095                 stream << "/>" << std::endl;
+00096                 stream << "<row ";
+00097                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
+00098                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
+00099                 stream << "/>" << std::endl;
+00100                 stream << "</glm_mat2>";
+00101 
+00102                 return stream;
+00103         }
+00104 
+00105         template<typename T>
+00106         std::ostream & operator << (std::ostream & stream, glm::detail::tmat3x3<T> const & mat)
+00107         {
+00108                 stream << "<glm_mat3>" << std::endl;
+00109                 stream << "<row ";
+00110                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
+00111                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
+00112                 stream << "z=\"" << glm::row(mat, 0)[2] << "\" ";
+00113                 stream << "/>" << std::endl;
+00114                 stream << "<row ";
+00115                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
+00116                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
+00117                 stream << "z=\"" << glm::row(mat, 1)[2] << "\" ";
+00118                 stream << "/>" << std::endl;
+00119                 stream << "<row ";
+00120                 stream << "x=\"" << glm::row(mat, 2)[0] << "\" ";
+00121                 stream << "y=\"" << glm::row(mat, 2)[1] << "\" ";
+00122                 stream << "z=\"" << glm::row(mat, 2)[2] << "\" ";
+00123                 stream << "/>" << std::endl;
+00124                 stream << "</glm_mat3>";
+00125 
+00126                 return stream;
+00127         }
+00128 
+00129         template<typename T>
+00130         std::ostream & operator << (std::ostream & stream, glm::detail::tmat4x4<T> const & mat)
+00131         {
+00132                 stream << "<glm_mat4>" << std::endl;
+00133                 stream << "<row ";
+00134                 stream << "x=\"" << glm::row(mat, 0)[0] << "\" ";
+00135                 stream << "y=\"" << glm::row(mat, 0)[1] << "\" ";
+00136                 stream << "z=\"" << glm::row(mat, 0)[2] << "\" ";
+00137                 stream << "w=\"" << glm::row(mat, 0)[3] << "\" ";
+00138                 stream << "/>" << std::endl;
+00139                 stream << "<row ";
+00140                 stream << "x=\"" << glm::row(mat, 1)[0] << "\" ";
+00141                 stream << "y=\"" << glm::row(mat, 1)[1] << "\" ";
+00142                 stream << "z=\"" << glm::row(mat, 1)[2] << "\" ";
+00143                 stream << "w=\"" << glm::row(mat, 1)[3] << "\" ";
+00144                 stream << "/>" << std::endl;
+00145                 stream << "<row ";
+00146                 stream << "x=\"" << glm::row(mat, 2)[0] << "\" ";
+00147                 stream << "y=\"" << glm::row(mat, 2)[1] << "\" ";
+00148                 stream << "z=\"" << glm::row(mat, 2)[2] << "\" ";
+00149                 stream << "w=\"" << glm::row(mat, 2)[3] << "\" ";
+00150                 stream << "/>" << std::endl;
+00151                 stream << "<row ";
+00152                 stream << "x=\"" << glm::row(mat, 3)[0] << "\" ";
+00153                 stream << "y=\"" << glm::row(mat, 3)[1] << "\" ";
+00154                 stream << "z=\"" << glm::row(mat, 3)[2] << "\" ";
+00155                 stream << "w=\"" << glm::row(mat, 3)[3] << "\" ";
+00156                 stream << "/>" << std::endl;
+00157                 stream << "</glm_mat4>";
+00158                         
+00159                 return stream;
+00160         }
+00161 
+00162 }//namespace glm
+00163 
+00164 #endif//GLM_VIRTREV_xstream
+
+
+ + + diff --git a/doc/api-0.9.2/a00305.html b/doc/api-0.9.3/a00142.html similarity index 67% rename from doc/api-0.9.2/a00305.html rename to doc/api-0.9.3/a00142.html index 4f39a97c..9c2b10b9 100644 --- a/doc/api-0.9.2/a00305.html +++ b/doc/api-0.9.3/a00142.html @@ -2,18 +2,18 @@ -Gtx_gradient_paint +Common functions - +
- +
@@ -21,8 +21,8 @@
-
Gtx_gradient_paint
-
+

Common functions

+
+ +

These all operate component-wise. +More...

+

These all operate component-wise.

+

The description is per component.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00143.html b/doc/api-0.9.3/a00143.html new file mode 100644 index 00000000..fe002716 --- /dev/null +++ b/doc/api-0.9.3/a00143.html @@ -0,0 +1,318 @@ + + + + +Exponential functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

Exponential functions

+
+
+ +

These all operate component-wise. +More...

+ + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
genType exp (genType const &x)
template<typename genType >
genType exp2 (genType const &x)
template<typename genType >
genType inversesqrt (genType const &x)
template<typename genType >
genType log (genType const &x)
template<typename genType >
genType log2 (genType const &x)
template<typename genType >
genType pow (genType const &x, genType const &y)
template<typename genType >
genType sqrt (genType const &x)
+

Detailed Description

+

These all operate component-wise.

+

The description is per component.

+

Function Documentation

+ +
+
+ + + + + + + + +
genType glm::exp (genType const & x)
+
+
+ +

Returns the natural exponentiation of x, i.e., e^x.

+
Parameters:
+ + +
xexp function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision.
+
+
+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL exp man page
+
+- GLSL 4.20.8 specification, section 8.2
+ +
+
+ +
+
+ + + + + + + + +
genType glm::exp2 (genType const & x)
+
+
+ +

Returns 2 raised to the x power.

+
Parameters:
+ + +
xexp2 function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision.
+
+
+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL exp2 man page
+
+- GLSL 4.20.8 specification, section 8.2
+ +
+
+ +
+
+ + + + + + + + +
genType glm::inversesqrt (genType const & x)
+
+
+ +

Returns the reciprocal of the positive square root of x.

+
Parameters:
+ + +
xinversesqrt function is defined for input values of x defined in the range [0, inf+) in the limit of the type precision.
+
+
+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL inversesqrt man page
+
+- GLSL 4.20.8 specification, section 8.2
+ +
+
+ +
+
+ + + + + + + + +
genType glm::log (genType const & x)
+
+
+ +

Returns the natural logarithm of x, i.e., returns the value y which satisfies the equation x = e^y.

+

Results are undefined if x <= 0.

+
Parameters:
+ + +
xlog function is defined for input values of x defined in the range (0, inf+) in the limit of the type precision.
+
+
+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL log man page
+
+- GLSL 4.20.8 specification, section 8.2
+ +
+
+ +
+
+ + + + + + + + +
genType glm::log2 (genType const & x)
+
+
+ +

Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.

+
Parameters:
+ + +
xlog2 function is defined for input values of x defined in the range (0, inf+) in the limit of the type precision.
+
+
+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL log2 man page
+
+- GLSL 4.20.8 specification, section 8.2
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType glm::pow (genType const & x,
genType const & y 
)
+
+
+ +

Returns x raised to the y power.

+
Parameters:
+ + + +
xpow function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision.
y
+
+
+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL pow man page
+
+- GLSL 4.20.8 specification, section 8.2
+ +
+
+ +
+
+ + + + + + + + +
genType glm::sqrt (genType const & x)
+
+
+ +

Returns the positive square root of x.

+
Parameters:
+ + +
xsqrt function is defined for input values of x defined in the range [0, inf+) in the limit of the type precision.
+
+
+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL sqrt man page
+
+- GLSL 4.20.8 specification, section 8.2
+ +
+
+
+ + + diff --git a/doc/api-0.9.3/a00144.html b/doc/api-0.9.3/a00144.html new file mode 100644 index 00000000..9ddca6f9 --- /dev/null +++ b/doc/api-0.9.3/a00144.html @@ -0,0 +1,359 @@ + + + + +Geometric functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

Geometric functions

+
+
+ +

These operate on vectors as vectors, not component-wise. +More...

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename valType >
detail::tvec3< valType > cross (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y)
template<typename genType >
genType::value_type distance (genType const &p0, genType const &p1)
template<typename genType >
genType::value_type dot (genType const &x, genType const &y)
template<typename genType >
genType faceforward (genType const &N, genType const &I, genType const &Nref)
template<typename genType >
genType::value_type length (genType const &x)
template<typename genType >
genType normalize (genType const &x)
template<typename genType >
genType reflect (genType const &I, genType const &N)
template<typename genType >
genType refract (genType const &I, genType const &N, typename genType::value_type const &eta)
+

Detailed Description

+

These operate on vectors as vectors, not component-wise.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
detail::tvec3<valType> glm::cross (detail::tvec3< valType > const & x,
detail::tvec3< valType > const & y 
)
+
+
+ +

Returns the cross product of x and y.

+
Template Parameters:
+ + +
valTypeFloating-point scalar types.
+
+
+
See also:
- GLSL cross man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType::value_type glm::distance (genType const & p0,
genType const & p1 
)
+
+
+ +

Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).

+
Template Parameters:
+ + +
genTypeFloating-point vector types.
+
+
+
See also:
- GLSL distance man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType::value_type glm::dot (genType const & x,
genType const & y 
)
+
+
+ +

Returns the dot product of x and y, i.e., result = x * y.

+
Template Parameters:
+ + +
genTypeFloating-point vector types.
+
+
+
See also:
- GLSL dot man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
genType glm::faceforward (genType const & N,
genType const & I,
genType const & Nref 
)
+
+
+ +

If dot(Nref, I) < 0.0, return N, otherwise, return -N.

+
Template Parameters:
+ + +
genTypeFloating-point vector types.
+
+
+
See also:
- GLSL faceforward man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+ +
+
+ + + + + + + + +
genType::value_type glm::length (genType const & x)
+
+
+ +

Returns the length of x, i.e., sqrt(x * x).

+
Template Parameters:
+ + +
genTypeFloating-point vector types.
+
+
+
See also:
- GLSL length man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+ +
+
+ + + + + + + + +
genType glm::normalize (genType const & x)
+
+
+ +

Returns a vector in the same direction as x but with length of 1.

+
See also:
- GLSL normalize man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType glm::reflect (genType const & I,
genType const & N 
)
+
+
+ +

For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.

+
Template Parameters:
+ + +
genTypeFloating-point vector types.
+
+
+
See also:
- GLSL reflect man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
genType glm::refract (genType const & I,
genType const & N,
typename genType::value_type const & eta 
)
+
+
+ +

For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.

+
Template Parameters:
+ + +
genTypeFloating-point vector types.
+
+
+
See also:
- GLSL refract man page
+
+- GLSL 4.20.8 specification, section 8.5
+ +
+
+
+ + + diff --git a/doc/api-0.9.3/a00145.html b/doc/api-0.9.3/a00145.html new file mode 100644 index 00000000..6d119640 --- /dev/null +++ b/doc/api-0.9.3/a00145.html @@ -0,0 +1,481 @@ + + + + +Integer functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

Integer functions

+
+
+ +

These all operate component-wise. +More...

+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , template< typename > class genIUType>
genIUType< T >::signed_type bitCount (genIUType< T > const &Value)
template<typename genIUType >
genIUType bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits)
template<typename genIUType >
genIUType bitfieldReverse (genIUType const &value)
template<typename T , template< typename > class genIUType>
genIUType< T >::signed_type findLSB (genIUType< T > const &Value)
template<typename T , template< typename > class genIUType>
genIUType< T >::signed_type findMSB (genIUType< T > const &Value)
template<typename genIType >
void imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb)
template<typename genUType >
genUType uaddCarry (genUType const &x, genUType const &y, genUType &carry)
template<typename genUType >
void umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb)
template<typename genUType >
genUType usubBorrow (genUType const &x, genUType const &y, genUType &borrow)
+

Detailed Description

+

These all operate component-wise.

+

The description is per component. The notation [a, b] means the set of bits from bit-number a through bit-number b, inclusive. The lowest-order bit is bit 0.

+

Function Documentation

+ +
+
+ + + + + + + + +
genIUType<T>::signed_type glm::bitCount (genIUType< T > const & Value)
+
+
+ +

Returns the number of bits set to 1 in the binary representation of value.

+
Template Parameters:
+ + +
genIUTypeSigned or unsigned integer scalar or vector types.
+
+
+
See also:
- GLSL bitCount man page
+
+- GLSL 4.20.8 specification, section 8.8
+
Todo:
Clarify the declaration to specify that scalars are suported.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
genIUType glm::bitfieldExtract (genIUType const & Value,
int const & Offset,
int const & Bits 
)
+
+
+ +

Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result.

+

For unsigned data types, the most significant bits of the result will be set to zero. For signed data types, the most significant bits will be set to the value of bit offset + base – 1.

+

If bits is zero, the result will be zero. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

+
Template Parameters:
+ + +
genIUTypeSigned or unsigned integer scalar or vector types.
+
+
+
See also:
- GLSL bitfieldExtract man page
+
+- GLSL 4.20.8 specification, section 8.8
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
genIUType glm::bitfieldInsert (genIUType const & Base,
genIUType const & Insert,
int const & Offset,
int const & Bits 
)
+
+
+ +

Returns the insertion the bits least-significant bits of insert into base.

+

The result will have bits [offset, offset + bits - 1] taken from bits [0, bits – 1] of insert, and all other bits taken directly from the corresponding bits of base. If bits is zero, the result will simply be base. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

+
Template Parameters:
+ + +
genIUTypeSigned or unsigned integer scalar or vector types.
+
+
+
See also:
- GLSL bitfieldInsert man page
+
+- GLSL 4.20.8 specification, section 8.8
+ +
+
+ +
+
+ + + + + + + + +
genIUType glm::bitfieldReverse (genIUType const & value)
+
+
+ +

Returns the reversal of the bits of value.

+

The bit numbered n of the result will be taken from bit (bits - 1) - n of value, where bits is the total number of bits used to represent value.

+
Template Parameters:
+ + +
genIUTypeSigned or unsigned integer scalar or vector types.
+
+
+
See also:
- GLSL bitfieldReverse man page
+
+- GLSL 4.20.8 specification, section 8.8
+ +
+
+ +
+
+ + + + + + + + +
genIUType<T>::signed_type glm::findLSB (genIUType< T > const & Value)
+
+
+ +

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

+

If value is zero, -1 will be returned.

+
Template Parameters:
+ + +
genIUTypeSigned or unsigned integer scalar or vector types.
+
+
+
See also:
- GLSL findLSB man page
+
+- GLSL 4.20.8 specification, section 8.8
+
Todo:
Clarify the declaration to specify that scalars are suported.
+ +
+
+ +
+
+ + + + + + + + +
genIUType<T>::signed_type glm::findMSB (genIUType< T > const & Value)
+
+
+ +

Returns the bit number of the most significant bit in the binary representation of value.

+

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

+
Template Parameters:
+ + +
genIUTypeSigned or unsigned integer scalar or vector types.
+
+
+
See also:
- GLSL findMSB man page
+
+- GLSL 4.20.8 specification, section 8.8
+
Todo:
Clarify the declaration to specify that scalars are suported.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void glm::imulExtended (genIType const & x,
genIType const & y,
genIType & msb,
genIType & lsb 
)
+
+
+ +

Multiplies 32-bit integers x and y, producing a 64-bit result.

+

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

+
Template Parameters:
+ + +
genITypeSigned integer scalar or vector types.
+
+
+
See also:
- GLSL imulExtended man page
+
+- GLSL 4.20.8 specification, section 8.8
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
genUType glm::uaddCarry (genUType const & x,
genUType const & y,
genUType & carry 
)
+
+
+ +

Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).

+

The value carry is set to 0 if the sum was less than pow(2, 32), or to 1 otherwise.

+
Template Parameters:
+ + +
genUTypeUnsigned integer scalar or vector types.
+
+
+
See also:
- GLSL uaddCarry man page
+
+- GLSL 4.20.8 specification, section 8.8
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void glm::umulExtended (genUType const & x,
genUType const & y,
genUType & msb,
genUType & lsb 
)
+
+
+ +

Multiplies 32-bit integers x and y, producing a 64-bit result.

+

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

+
Template Parameters:
+ + +
genUTypeUnsigned integer scalar or vector types.
+
+
+
See also:
- GLSL umulExtended man page
+
+- GLSL 4.20.8 specification, section 8.8
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
genUType glm::usubBorrow (genUType const & x,
genUType const & y,
genUType & borrow 
)
+
+
+ +

Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise.

+

The value borrow is set to 0 if x >= y, or to 1 otherwise.

+
Template Parameters:
+ + +
genUTypeUnsigned integer scalar or vector types.
+
+
+
See also:
- GLSL usubBorrow man page
+
+- GLSL 4.20.8 specification, section 8.8
+ +
+
+
+ + + diff --git a/doc/api-0.9.3/a00146.html b/doc/api-0.9.3/a00146.html new file mode 100644 index 00000000..e1b16231 --- /dev/null +++ b/doc/api-0.9.3/a00146.html @@ -0,0 +1,348 @@ + + + + +Matrix functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

Matrix functions

+
+
+ +

For each of the following built-in matrix functions, there is both a single-precision floating point version, where all arguments and return values are single precision, and a double-precision floating version, where all arguments and return values are double precision. +More...

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename valType >
detail::tmat2x2< valType >
+::value_type 
determinant (detail::tmat2x2< valType > const &m)
template<typename valType >
detail::tmat3x3< valType >
+::value_type 
determinant (detail::tmat3x3< valType > const &m)
template<typename valType >
detail::tmat4x4< valType >
+::value_type 
determinant (detail::tmat4x4< valType > const &m)
template<typename valType >
detail::tmat4x4< valType > inverse (detail::tmat4x4< valType > const &m)
template<typename valType >
detail::tmat3x3< valType > inverse (detail::tmat3x3< valType > const &m)
template<typename valType >
detail::tmat2x2< valType > inverse (detail::tmat2x2< valType > const &m)
template<typename matType >
matType matrixCompMult (matType const &x, matType const &y)
template<typename vecType , typename matType >
matType outerProduct (vecType const &c, vecType const &r)
template<typename matType >
matType::transpose_type transpose (matType const &x)
+

Detailed Description

+

For each of the following built-in matrix functions, there is both a single-precision floating point version, where all arguments and return values are single precision, and a double-precision floating version, where all arguments and return values are double precision.

+

Only the single-precision floating point version is shown.

+

Function Documentation

+ +
+
+ + + + + + + + +
detail::tmat2x2<valType>::value_type glm::determinant (detail::tmat2x2< valType > const & m)
+
+
+ +

Return the determinant of a mat2 matrix.

+
Template Parameters:
+ + +
valTypeFloating-point scalar types.
+
+
+
See also:
- GLSL determinant man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+ +
+
+ + + + + + + + +
detail::tmat3x3<valType>::value_type glm::determinant (detail::tmat3x3< valType > const & m)
+
+
+ +

Return the determinant of a mat3 matrix.

+
Template Parameters:
+ + +
valTypeFloating-point scalar types.
+
+
+
See also:
- GLSL determinant man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+ +
+
+ + + + + + + + +
detail::tmat4x4<valType>::value_type glm::determinant (detail::tmat4x4< valType > const & m)
+
+
+ +

Return the determinant of a mat4 matrix.

+
Template Parameters:
+ + +
valTypeFloating-point scalar types.
+
+
+
See also:
- GLSL determinant man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+ +
+
+ + + + + + + + +
detail::tmat4x4<valType> glm::inverse (detail::tmat4x4< valType > const & m)
+
+
+ +

Return the inverse of a mat4 matrix.

+
Template Parameters:
+ + +
valTypeFloating-point scalar types.
+
+
+
See also:
- GLSL inverse man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+ +
+
+ + + + + + + + +
detail::tmat3x3<valType> glm::inverse (detail::tmat3x3< valType > const & m)
+
+
+ +

Return the inverse of a mat3 matrix.

+
Template Parameters:
+ + +
valTypeFloating-point scalar types.
+
+
+
See also:
- GLSL inverse man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+ +
+
+ + + + + + + + +
detail::tmat2x2<valType> glm::inverse (detail::tmat2x2< valType > const & m)
+
+
+ +

Return the inverse of a mat2 matrix.

+
Template Parameters:
+ + +
valTypeFloating-point scalar types.
+
+
+
See also:
- GLSL inverse man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
matType glm::matrixCompMult (matType const & x,
matType const & y 
)
+
+
+ +

Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].

+
Template Parameters:
+ + +
matTypeFloating-point matrix types.
+
+
+
See also:
- GLSL matrixCompMult man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
matType glm::outerProduct (vecType const & c,
vecType const & r 
)
+
+
+ +

Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.

+
Template Parameters:
+ + +
matTypeFloating-point matrix types.
+
+
+
See also:
- GLSL outerProduct man page
+
+- GLSL 4.20.8 specification, section 8.6
+
Todo:
Clarify the declaration to specify that matType doesn't have to be provided when used.
+ +
+
+ +
+
+ + + + + + + + +
matType::transpose_type glm::transpose (matType const & x)
+
+
+ +

Returns the transposed matrix of x.

+
Template Parameters:
+ + +
matTypeFloating-point matrix types.
+
+
+
See also:
- GLSL transpose man page
+
+- GLSL 4.20.8 specification, section 8.6
+ +
+
+
+ + + diff --git a/doc/api-0.9.3/a00147.html b/doc/api-0.9.3/a00147.html new file mode 100644 index 00000000..935fb087 --- /dev/null +++ b/doc/api-0.9.3/a00147.html @@ -0,0 +1,177 @@ + + + + +Noise functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

Noise functions

+
+
+ +

Noise functions are stochastic functions that can be used to increase visual complexity. +More...

+ + + + + + + + + + +

+Functions

template<typename genType >
genType::value_type noise1 (genType const &x)
template<typename genType >
detail::tvec2< typename
+genType::value_type > 
noise2 (genType const &x)
template<typename genType >
detail::tvec3< typename
+genType::value_type > 
noise3 (genType const &x)
template<typename genType >
detail::tvec4< typename
+genType::value_type > 
noise4 (genType const &x)
+

Detailed Description

+

Noise functions are stochastic functions that can be used to increase visual complexity.

+

Values returned by the following noise functions give the appearance of randomness, but are not truly random.

+

Function Documentation

+ +
+
+ + + + + + + + +
genType::value_type glm::noise1 (genType const & x)
+
+
+ +

Returns a 1D noise value based on the input value x.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL noise1 man page
+
+- GLSL 4.20.8 specification, section 8.13
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec2<typename genType::value_type> glm::noise2 (genType const & x)
+
+
+ +

Returns a 2D noise value based on the input value x.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL noise2 man page
+
+- GLSL 4.20.8 specification, section 8.13
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec3<typename genType::value_type> glm::noise3 (genType const & x)
+
+
+ +

Returns a 3D noise value based on the input value x.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL noise3 man page
+
+- GLSL 4.20.8 specification, section 8.13
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec4<typename genType::value_type> glm::noise4 (genType const & x)
+
+
+ +

Returns a 4D noise value based on the input value x.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL noise4 man page
+
+- GLSL 4.20.8 specification, section 8.13
+ +
+
+
+ + + diff --git a/doc/api-0.9.3/a00148.html b/doc/api-0.9.3/a00148.html new file mode 100644 index 00000000..cf382478 --- /dev/null +++ b/doc/api-0.9.3/a00148.html @@ -0,0 +1,357 @@ + + + + +Floating-Point Pack and Unpack Functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

Floating-Point Pack and Unpack Functions

+
+
+ +

These functions do not operate component-wise, rather as described in each case. +More...

+ + + + + + + + + + + + + + +

+Functions

double packDouble2x32 (detail::tvec2< detail::uint32 > const &v)
uint packHalf2x16 (vec2 const &v)
detail::uint32 packSnorm2x16 (detail::tvec2< detail::float32 > const &v)
detail::uint32 packSnorm4x8 (detail::tvec4< detail::float32 > const &v)
detail::uint32 packUnorm2x16 (detail::tvec2< detail::float32 > const &v)
detail::uint32 packUnorm4x8 (detail::tvec4< detail::float32 > const &v)
detail::tvec2< detail::uint32 > unpackDouble2x32 (double const &v)
vec2 unpackHalf2x16 (uint const &v)
detail::tvec2< detail::float32 > unpackSnorm2x16 (detail::uint32 const &p)
detail::tvec4< detail::float32 > unpackSnorm4x8 (detail::uint32 const &p)
detail::tvec2< detail::float32 > unpackUnorm2x16 (detail::uint32 const &p)
detail::tvec4< detail::float32 > unpackUnorm4x8 (detail::uint32 const &p)
+

Detailed Description

+

These functions do not operate component-wise, rather as described in each case.

+

Function Documentation

+ +
+
+ + + + + + + + +
double glm::packDouble2x32 (detail::tvec2< detail::uint32 > const & v)
+
+
+ +

Returns a double-precision value obtained by packing the components of v into a 64-bit value.

+

If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit- level representation of v is preserved. The first vector component specifies the 32 least significant bits; the second component specifies the 32 most significant bits.

+
See also:
- GLSL packDouble2x32 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
uint glm::packHalf2x16 (vec2 const & v)
+
+
+ +

Returns an unsigned integer obtained by converting the components of a two-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these two 16- bit integers into a 32-bit unsigned integer.

+

The first vector component specifies the 16 least-significant bits of the result; the second component specifies the 16 most-significant bits.

+
See also:
- GLSL packHalf2x16 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::uint32 glm::packSnorm2x16 (detail::tvec2< detail::float32 > const & v)
+
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm2x16: round(clamp(v, -1, +1) * 32767.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also:
- GLSL packSnorm2x16 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::uint32 glm::packSnorm4x8 (detail::tvec4< detail::float32 > const & v)
+
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm4x8: round(clamp(c, -1, +1) * 127.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also:
- GLSL packSnorm4x8 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::uint32 glm::packUnorm2x16 (detail::tvec2< detail::float32 > const & v)
+
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm2x16: round(clamp(c, 0, +1) * 65535.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also:
- GLSL packUnorm2x16 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::uint32 glm::packUnorm4x8 (detail::tvec4< detail::float32 > const & v)
+
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm4x8: round(clamp(c, 0, +1) * 255.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also:
- GLSL packUnorm4x8 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec2<detail::uint32> glm::unpackDouble2x32 (double const & v)
+
+
+ +

Returns a two-component unsigned integer vector representation of v.

+

The bit-level representation of v is preserved. The first component of the vector contains the 32 least significant bits of the double; the second component consists the 32 most significant bits.

+
See also:
- GLSL unpackDouble2x32 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
vec2 glm::unpackHalf2x16 (uint const & v)
+
+
+ +

Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.

+

The first component of the vector is obtained from the 16 least-significant bits of v; the second component is obtained from the 16 most-significant bits of v.

+
See also:
- GLSL unpackHalf2x16 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec2<detail::float32> glm::unpackSnorm2x16 (detail::uint32 const & p)
+
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm2x16: clamp(f / 32767.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also:
- GLSL unpackSnorm2x16 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec4<detail::float32> glm::unpackSnorm4x8 (detail::uint32 const & p)
+
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x8: clamp(f / 127.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also:
- GLSL unpackSnorm4x8 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec2<detail::float32> glm::unpackUnorm2x16 (detail::uint32 const & p)
+
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm2x16: f / 65535.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also:
- GLSL unpackUnorm2x16 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec4<detail::float32> glm::unpackUnorm4x8 (detail::uint32 const & p)
+
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also:
- GLSL unpackUnorm4x8 man page
+
+- GLSL 4.20.8 specification, section 8.4
+ +
+
+
+ + + diff --git a/doc/api-0.9.3/a00149.html b/doc/api-0.9.3/a00149.html new file mode 100644 index 00000000..c4674097 --- /dev/null +++ b/doc/api-0.9.3/a00149.html @@ -0,0 +1,525 @@ + + + + +Angle and Trigonometry Functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

Angle and Trigonometry Functions

+
+
+ +

Function parameters specified as angle are assumed to be in units of radians. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
genType acos (genType const &x)
template<typename genType >
genType acosh (genType const &x)
template<typename genType >
genType asin (genType const &x)
template<typename genType >
genType asinh (genType const &x)
template<typename genType >
genType atan (genType const &y, genType const &x)
template<typename genType >
genType atan (genType const &y_over_x)
template<typename genType >
genType atanh (genType const &x)
template<typename genType >
genType cos (genType const &angle)
template<typename genType >
genType cosh (genType const &angle)
template<typename genType >
genType degrees (genType const &radians)
template<typename genType >
genType radians (genType const &degrees)
template<typename genType >
genType sin (genType const &angle)
template<typename genType >
genType sinh (genType const &angle)
template<typename genType >
genType tan (genType const &angle)
template<typename genType >
genType tanh (genType const &angle)
+

Detailed Description

+

Function parameters specified as angle are assumed to be in units of radians.

+

In no case will any of these functions result in a divide by zero error. If the divisor of a ratio is 0, then results will be undefined.

+

These all operate component-wise. The description is per component.

+

Function Documentation

+ +
+
+ + + + + + + + +
genType glm::acos (genType const & x)
+
+
+ +

Arc cosine.

+

Returns an angle whose sine is x. The range of values returned by this function is [0, PI]. Results are undefined if |x| > 1.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL acos man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::acosh (genType const & x)
+
+
+ +

Arc hyperbolic cosine; returns the non-negative inverse of cosh.

+

Results are undefined if x < 1.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL acosh man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::asin (genType const & x)
+
+
+ +

Arc sine.

+

Returns an angle whose sine is x. The range of values returned by this function is [-PI/2, PI/2]. Results are undefined if |x| > 1.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL asin man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::asinh (genType const & x)
+
+
+ +

Arc hyperbolic sine; returns the inverse of sinh.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL asinh man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType glm::atan (genType const & y,
genType const & x 
)
+
+
+ +

Arc tangent.

+

Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL atan man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +

Referenced by glm::atan2().

+ +
+
+ +
+
+ + + + + + + + +
genType glm::atan (genType const & y_over_x)
+
+
+ +

Arc tangent.

+

Returns an angle whose tangent is y_over_x. The range of values returned by this function is [-PI/2, PI/2].

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL atan man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::atanh (genType const & x)
+
+
+ +

Arc hyperbolic tangent; returns the inverse of tanh.

+

Results are undefined if abs(x) >= 1.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL atanh man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::cos (genType const & angle)
+
+
+ +

The standard trigonometric cosine function.

+

The values returned by this function will range from [-1, 1].

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL cos man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::cosh (genType const & angle)
+
+
+ +

Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL cosh man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::degrees (genType const & radians)
+
+
+ +

Converts radians to degrees and returns the result.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL degrees man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::radians (genType const & degrees)
+
+
+ +

Converts degrees to radians and returns the result.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL radians man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::sin (genType const & angle)
+
+
+ +

The standard trigonometric sine function.

+

The values returned by this function will range from [-1, 1].

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL sin man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::sinh (genType const & angle)
+
+
+ +

Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL sinh man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::tan (genType const & angle)
+
+
+ +

The standard trigonometric tangent function.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL tan man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+ +
+
+ + + + + + + + +
genType glm::tanh (genType const & angle)
+
+
+ +

Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL tanh man page
+
+- GLSL 4.20.8 specification, section 8.1
+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00230.html b/doc/api-0.9.3/a00150.html similarity index 52% rename from doc/api-0.9.2/a00230.html rename to doc/api-0.9.3/a00150.html index f60aa25d..3b02bddd 100644 --- a/doc/api-0.9.2/a00230.html +++ b/doc/api-0.9.3/a00150.html @@ -2,18 +2,18 @@ -glm::virtrev Namespace Reference +Vector Relational Functions - +
-
glm::virtrev Namespace Reference
-
+

Vector Relational Functions

+
-

VIRTREV extensions. -More...

+

Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results. +More...

-

Detailed Description

-

VIRTREV extensions.

-
+

Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results.

+

For vector results, use the following built-in functions.

+

In all cases, the sizes of all the input and return vectors for any particular call must match.

+
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00239.html b/doc/api-0.9.3/a00151.html similarity index 62% rename from doc/api-0.9.2/a00239.html rename to doc/api-0.9.3/a00151.html index 84caec1b..012e072d 100644 --- a/doc/api-0.9.2/a00239.html +++ b/doc/api-0.9.3/a00151.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@

Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program. -More...

+More...

- - - - - - - - + + + + + + + + + + +

Modules

 GLM_GTC_half_float: Half-precision floating-point based types and functions.
 GLM_GTC_matrix_access: Access matrix rows and columns.
 GLM_GTC_matrix_integer: Integer matrix types.
 GLM_GTC_matrix_inverse: Additional matrix inverse function
 GLM_GTC_matrix_transform: Matrix transform functions.
 GLM_GTC_quaternion: Quaternion types and functions
 GLM_GTC_type_precision: Vector and matrix types with defined precisions.
 GLM_GTC_type_ptr: Memory layout access.
 GLM_GTC_half_float: Half-precision floating-point based types and functions
 GLM_GTC_matrix_access: Access matrix rows and columns
 GLM_GTC_matrix_integer: Integer matrix types
 GLM_GTC_matrix_inverse: Additional matrix inverse function
 GLM_GTC_matrix_transform: Matrix transform functions
 GLM_GTC_noise: Procedural noise functions
 GLM_GTC_quaternion: Quaternion types and functions
 GLM_GTC_random: Random number generation
 GLM_GTC_swizzle: Swizzle 'operator' implementation
 GLM_GTC_type_precision: Vector and matrix types with defined precisions
 GLM_GTC_type_ptr: Memory layout access
-

Detailed Description

+

Detailed Description

Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program.

GTC extensions aim to be stable.

-

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00248.html b/doc/api-0.9.3/a00152.html similarity index 64% rename from doc/api-0.9.2/a00248.html rename to doc/api-0.9.3/a00152.html index 77af5c22..3736a4fa 100644 --- a/doc/api-0.9.2/a00248.html +++ b/doc/api-0.9.3/a00152.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@

Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program. -More...

+More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Modules

 GLM_GTX_associated_min_max: Associated Min/Max
 GLM_GTX_bit: Extended bitwise operations
 GLM_GTX_closest_point: Find closest point
 GLM_GTX_color_cast: Color conversion
 GLM_GTX_color_space: RGB to HSV conversion
 GLM_GTX_color_space_YCoCg: RGB to YCoCg conversion
 GLM_GTX_compatibility: Cg and HLSL compatibility
 GLM_GTX_component_wise: Component wise
 GLM_GTX_epsilon: Epsilon comparison
 GLM_GTX_euler_angles: Matrix from euler angles
 GLM_GTX_extend: Position extending
 GLM_GTX_extented_min_max: Extended min max
 GLM_GTX_fast_exponential: Fast exponentiation functions
 GLM_GTX_fast_square_root: Fast square root functions
 GLM_GTX_fast_trigonometry: Fast trigonometric functions
 GLM_GTX_handed_coordinate_space: Space Handedness
 GLM_GTX_inertia: Intertial matrix
 GLM_GTX_int_10_10_10_2: Packed integer
 GLM_GTX_integer: Extended integer functions
 GLM_GTX_intersect: Intersection tests
 GLM_GTX_log_base: Log with base
 GLM_GTX_matrix_cross_product: Cross product matrix form
 GLM_GTX_matrix_major_storage: Build matrix
 GLM_GTX_matrix_operation: Extended matrix operations
 GLM_GTX_matrix_query: Query matrix properties
 GLM_GTX_mixed_producte: Mixed product
 GLM_GTX_multiple: Multiples
 GLM_GTX_norm: Vector norm calculations
 GLM_GTX_normal: Compute normals
 GLM_GTX_normalize_dot: Normalize dot product
 GLM_GTX_number_precision: Number precision
 GLM_GTX_ocl_type: OpenCL types
 GLM_GTX_optimum_pow: Optimum pow
 GLM_GTX_orthonormalize: Orthonormalize
 GLM_GTX_perpendicular: Perpendicular
 GLM_GTX_polar_coordinates: Polar coordinates
 GLM_GTX_projection: Projection
 GLM_GTX_quaternion: Extented quaternion types and functions
 GLM_GTX_random: Random
 GLM_GTX_raw_data: Raw data
 GLM_GTX_reciprocal: Reciprocal
 GLM_GTX_rotate_vector: Rotate vector
 GLM_GTX_simd_mat4: SIMD mat4 type and functions
 GLM_GTX_simd_vec4: SIMD vec4 type and functions
 GLM_GTX_spline: Spline
 GLM_GTX_string_cast: String cast
 GLM_GTX_transform: Extented transformation matrices
 GLM_GTX_transform2: Extra transformation matrices
 GLM_GTX_unsigned_int: Unsigned int
 GLM_GTX_vector_access: Vector access
 GLM_GTX_vector_angle: Vector angle
 GLM_GTX_vector_query: Vector query
 GLM_GTX_verbose_operator: Verbose operator
 GLM_GTX_wrap: Texture coordinate wrap modes
 GLM_GTX_associated_min_max: Associated Min/Max
 GLM_GTX_bit: Extended bitwise operations
 GLM_GTX_closest_point: Find closest point
 GLM_GTX_color_cast: Color conversion
 GLM_GTX_color_space: RGB to HSV conversion
 GLM_GTX_color_space_YCoCg: RGB to YCoCg conversion
 GLM_GTX_compatibility: Cg and HLSL compatibility
 GLM_GTX_component_wise: Component wise
 GLM_GTX_constants: Provide build-in constants
 GLM_GTX_epsilon: Epsilon comparison
 GLM_GTX_euler_angles: Matrix from euler angles
 GLM_GTX_extend: Position extending
 GLM_GTX_extented_min_max: Extended min max
 GLM_GTX_fast_exponential: Fast exponentiation functions
 GLM_GTX_fast_square_root: Fast square root functions
 GLM_GTX_fast_trigonometry: Fast trigonometric functions
 GLM_GTX_gradient_paint: Procedural gradient color
 GLM_GTX_handed_coordinate_space: Space Handedness
 GLM_GTX_inertia: Intertial matrix
 GLM_GTX_int_10_10_10_2: Packed integer
 GLM_GTX_integer: Extended integer functions
 GLM_GTX_intersect: Intersection tests
 GLM_GTX_log_base: Log with base
 GLM_GTX_matrix_cross_product: Cross product matrix form
 GLM_GTX_matrix_interpolation: Rotation and translation matrix interpolation
 GLM_GTX_matrix_major_storage: Build matrix
 GLM_GTX_matrix_operation: Extended matrix operations
 GLM_GTX_matrix_query: Query matrix properties
 GLM_GTX_mixed_producte: Mixed product
 GLM_GTX_multiple: Multiples
 GLM_GTX_noise: Procedural noise functions
 GLM_GTX_norm: Vector norm calculations
 GLM_GTX_normal: Compute normals
 GLM_GTX_normalize_dot: Normalize dot product
 GLM_GTX_number_precision: Number precision
 GLM_GTX_ocl_type: OpenCL types
 GLM_GTX_optimum_pow: Optimum pow
 GLM_GTX_orthonormalize: Orthonormalize
 GLM_GTX_perpendicular: Perpendicular
 GLM_GTX_polar_coordinates: Polar coordinates
 GLM_GTX_projection: Projection
 GLM_GTX_quaternion: Extented quaternion types and functions
 GLM_GTX_random: Random
 GLM_GTX_raw_data: Raw data
 GLM_GTX_reciprocal: Reciprocal
 GLM_GTX_rotate_vector: Rotate vector
 GLM_GTX_simd_mat4: SIMD mat4 type and functions
 GLM_GTX_simd_vec4: SIMD vec4 type and functions
 GLM_GTX_spline: Spline
 GLM_GTX_std_based_type: Add types based on STL
 GLM_GTX_string_cast: String cast
 GLM_GTX_transform: Extented transformation matrices
 GLM_GTX_transform2: Extra transformation matrices
 GLM_GTX_ulp: Accuracy measurement
 GLM_GTX_vec1: Add vec1 types
 GLM_GTX_vector_access: Vector access
 GLM_GTX_vector_angle: Vector angle
 GLM_GTX_vector_query: Vector query
 GLM_GTX_verbose_operator: Verbose operator
 GLM_GTX_wrap: Texture coordinate wrap modes
-

Detailed Description

+

Detailed Description

Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program.

Experimental extensions are useful functions and types, but the development of their API and functionality is not necessarily stable. They can change substantially between versions. Backwards compatibility is not much of an issue for them.

-

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00303.html b/doc/api-0.9.3/a00153.html similarity index 80% rename from doc/api-0.9.2/a00303.html rename to doc/api-0.9.3/a00153.html index c52d5ea2..0848df57 100644 --- a/doc/api-0.9.2/a00303.html +++ b/doc/api-0.9.3/a00153.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@

Extensions develop and maintain by Mathieu [matrem] Roumillac (http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&User=22660). -More...

+More...

- +

Modules

 GLM_VIRTREV_xstream: xml like output
 GLM_VIRTREV_xstream: xml like output
-

Detailed Description

+

Detailed Description

Extensions develop and maintain by Mathieu [matrem] Roumillac (http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&User=22660).

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00154.html b/doc/api-0.9.3/a00154.html new file mode 100644 index 00000000..0f091ab8 --- /dev/null +++ b/doc/api-0.9.3/a00154.html @@ -0,0 +1,67 @@ + + + + +GLM Core + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

GLM Core

+
+
+ +

The core of GLM, which implements exactly and only the GLSL specification to the degree possible. +More...

+ + + + + + + + + + + + + + +

+Modules

 Common functions
 Exponential functions
 Geometric functions
 Integer functions
 Matrix functions
 Noise functions
 Floating-Point Pack and Unpack Functions
 Angle and Trigonometry Functions
 Vector Relational Functions
 Types
 Precision types
 Template types
+

Detailed Description

+

The core of GLM, which implements exactly and only the GLSL specification to the degree possible.

+

The GLM core consists of C++ types that mirror GLSL types and C++ functions that mirror the GLSL functions. It also includes a set of precision-based types that can be used in the appropriate functions. The C++ types are all based on a basic set of template types.

+

The best documentation for GLM Core is the current GLSL specification, version 4.2 (pdf file). There are a few differences between GLM core and GLSL.

+

GLM core functionnalities require <glm/glm.hpp> to be included to be used.

+
+ + + diff --git a/doc/api-0.9.2/a00235.html b/doc/api-0.9.3/a00155.html similarity index 52% rename from doc/api-0.9.2/a00235.html rename to doc/api-0.9.3/a00155.html index db8cebce..477e4ca3 100644 --- a/doc/api-0.9.2/a00235.html +++ b/doc/api-0.9.3/a00155.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

Types

+

The standard types defined by the specification. -More...

+More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef detail::tvec2< bool > bvec2
typedef detail::tvec3< bool > bvec3
typedef detail::tvec4< bool > bvec4
typedef detail::tmat2x2< double > dmat2
typedef detail::tmat2x2< double > dmat2x2
typedef detail::tmat2x3< double > dmat2x3
typedef detail::tmat2x4< double > dmat2x4
typedef detail::tmat3x3< double > dmat3
typedef detail::tmat3x2< double > dmat3x2
typedef detail::tmat3x3< double > dmat3x3
typedef detail::tmat3x4< double > dmat3x4
typedef detail::tmat4x4< double > dmat4
typedef detail::tmat4x2< double > dmat4x2
typedef detail::tmat4x3< double > dmat4x3
typedef detail::tmat4x4< double > dmat4x4
typedef detail::tvec2< double > dvec2
typedef detail::tvec3< double > dvec3
typedef detail::tvec4< double > dvec4
typedef precision::mediump_ivec2 ivec2
typedef precision::mediump_ivec3 ivec3
typedef precision::mediump_ivec4 ivec4
typedef mat2x2 mat2
typedef precision::mediump_mat2x2 mat2x2
typedef precision::mediump_mat2x3 mat2x3
typedef precision::mediump_mat2x4 mat2x4
typedef mat3x3 mat3
typedef precision::mediump_mat3x2 mat3x2
typedef precision::mediump_mat3x3 mat3x3
typedef precision::mediump_mat3x4 mat3x4
typedef mat4x4 mat4
typedef precision::mediump_mat4x2 mat4x2
typedef precision::mediump_mat4x3 mat4x3
typedef precision::mediump_mat4x4 mat4x4
typedef precision::mediump_uvec2 uvec2
typedef precision::mediump_uvec3 uvec3
typedef precision::mediump_uvec4 uvec4
typedef precision::mediump_vec2 vec2
typedef precision::mediump_vec3 vec3
typedef precision::mediump_vec4 vec4
typedef detail::tvec2< bool > bvec2
typedef detail::tvec3< bool > bvec3
typedef detail::tvec4< bool > bvec4
typedef detail::tmat2x2< double > dmat2
typedef detail::tmat2x2< double > dmat2x2
typedef detail::tmat2x3< double > dmat2x3
typedef detail::tmat2x4< double > dmat2x4
typedef detail::tmat3x3< double > dmat3
typedef detail::tmat3x2< double > dmat3x2
typedef detail::tmat3x3< double > dmat3x3
typedef detail::tmat3x4< double > dmat3x4
typedef detail::tmat4x4< double > dmat4
typedef detail::tmat4x2< double > dmat4x2
typedef detail::tmat4x3< double > dmat4x3
typedef detail::tmat4x4< double > dmat4x4
typedef detail::tvec2< double > dvec2
typedef detail::tvec3< double > dvec3
typedef detail::tvec4< double > dvec4
typedef mediump_ivec2 ivec2
typedef mediump_ivec3 ivec3
typedef mediump_ivec4 ivec4
typedef mat2x2 mat2
typedef mediump_mat2x2 mat2x2
typedef mediump_mat2x3 mat2x3
typedef mediump_mat2x4 mat2x4
typedef mat3x3 mat3
typedef mediump_mat3x2 mat3x2
typedef mediump_mat3x3 mat3x3
typedef mediump_mat3x4 mat3x4
typedef mat4x4 mat4
typedef mediump_mat4x2 mat4x2
typedef mediump_mat4x3 mat4x3
typedef mediump_mat4x4 mat4x4
typedef mediump_uvec2 uvec2
typedef mediump_uvec3 uvec3
typedef mediump_uvec4 uvec4
typedef mediump_vec3 vec3
typedef mediump_vec4 vec4
-

Detailed Description

+

Detailed Description

The standard types defined by the specification.

-

These types are all typedefs of more generalized, template types. To see the definiton of these template types, go to Template types.

+

These types are all typedefs of more generalized, template types. To see the definiton of these template types, go to Template types.


Typedef Documentation

- +
@@ -99,11 +98,11 @@ Typedefs

2 components vector of boolean.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 228 of file type.hpp.

+

Definition at line 262 of file type.hpp.

- +
@@ -117,11 +116,11 @@ Typedefs

3 components vector of boolean.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 233 of file type.hpp.

+

Definition at line 267 of file type.hpp.

- +
@@ -135,11 +134,11 @@ Typedefs

4 components vector of boolean.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 238 of file type.hpp.

+

Definition at line 272 of file type.hpp.

- +
@@ -153,11 +152,11 @@ Typedefs

2 * 2 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 261 of file type.hpp.

+

Definition at line 295 of file type.hpp.

- +
@@ -171,11 +170,11 @@ Typedefs

2 * 2 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 276 of file type.hpp.

+

Definition at line 310 of file type.hpp.

- +
@@ -189,11 +188,11 @@ Typedefs

2 * 3 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 281 of file type.hpp.

+

Definition at line 315 of file type.hpp.

- +
@@ -207,11 +206,11 @@ Typedefs

2 * 4 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 286 of file type.hpp.

+

Definition at line 320 of file type.hpp.

- +
@@ -225,11 +224,11 @@ Typedefs

3 * 3 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 266 of file type.hpp.

+

Definition at line 300 of file type.hpp.

- +
@@ -243,11 +242,11 @@ Typedefs

3 * 2 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 291 of file type.hpp.

+

Definition at line 325 of file type.hpp.

- +
@@ -261,11 +260,11 @@ Typedefs

3 * 3 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 296 of file type.hpp.

+

Definition at line 330 of file type.hpp.

- +
@@ -279,11 +278,11 @@ Typedefs

3 * 4 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 301 of file type.hpp.

+

Definition at line 335 of file type.hpp.

- +
@@ -297,11 +296,11 @@ Typedefs

4 * 4 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 271 of file type.hpp.

+

Definition at line 305 of file type.hpp.

- +
@@ -315,11 +314,11 @@ Typedefs

4 * 2 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 306 of file type.hpp.

+

Definition at line 340 of file type.hpp.

- +
@@ -333,11 +332,11 @@ Typedefs

4 * 3 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 311 of file type.hpp.

+

Definition at line 345 of file type.hpp.

- +
@@ -351,11 +350,11 @@ Typedefs

4 * 4 matrix of double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 316 of file type.hpp.

+

Definition at line 350 of file type.hpp.

- +
@@ -369,11 +368,11 @@ Typedefs

Vector of 2 double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 246 of file type.hpp.

+

Definition at line 280 of file type.hpp.

- +
@@ -387,11 +386,11 @@ Typedefs

Vector of 3 double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 251 of file type.hpp.

+

Definition at line 285 of file type.hpp.

- +
@@ -405,16 +404,16 @@ Typedefs

Vector of 4 double-precision floating-point numbers.

From GLSL 4.00.8 specification, section 4.1 Basic Types.

-

Definition at line 256 of file type.hpp.

+

Definition at line 290 of file type.hpp.

- +
- +
typedef precision::mediump_ivec2 ivec2typedef mediump_ivec2 ivec2
@@ -423,16 +422,16 @@ Typedefs

2 components vector of signed integer numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 177 of file type.hpp.

+

Definition at line 211 of file type.hpp.

- +
- +
typedef precision::mediump_ivec3 ivec3typedef mediump_ivec3 ivec3
@@ -441,16 +440,16 @@ Typedefs

3 components vector of signed integer numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 182 of file type.hpp.

+

Definition at line 216 of file type.hpp.

- +
- +
typedef precision::mediump_ivec4 ivec4typedef mediump_ivec4 ivec4
@@ -459,11 +458,11 @@ Typedefs

4 components vector of signed integer numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 187 of file type.hpp.

+

Definition at line 221 of file type.hpp.

- +
@@ -477,16 +476,16 @@ Typedefs

2 columns of 2 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 146 of file type.hpp.

+

Definition at line 180 of file type.hpp.

- +
- +
typedef precision::mediump_mat2x2 mat2x2typedef mediump_mat2x2 mat2x2
@@ -495,16 +494,16 @@ Typedefs

2 columns of 2 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 99 of file type.hpp.

+

Definition at line 133 of file type.hpp.

- +
- +
typedef precision::mediump_mat2x3 mat2x3typedef mediump_mat2x3 mat2x3
@@ -513,16 +512,16 @@ Typedefs

2 columns of 3 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 104 of file type.hpp.

+

Definition at line 138 of file type.hpp.

- +
- +
typedef precision::mediump_mat2x4 mat2x4typedef mediump_mat2x4 mat2x4
@@ -531,11 +530,11 @@ Typedefs

2 columns of 4 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 109 of file type.hpp.

+

Definition at line 143 of file type.hpp.

- +
@@ -549,16 +548,16 @@ Typedefs

3 columns of 3 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 151 of file type.hpp.

+

Definition at line 185 of file type.hpp.

- +
- +
typedef precision::mediump_mat3x2 mat3x2typedef mediump_mat3x2 mat3x2
@@ -567,16 +566,16 @@ Typedefs

3 columns of 2 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 114 of file type.hpp.

+

Definition at line 148 of file type.hpp.

- +
- +
typedef precision::mediump_mat3x3 mat3x3typedef mediump_mat3x3 mat3x3
@@ -585,16 +584,16 @@ Typedefs

3 columns of 3 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 119 of file type.hpp.

+

Definition at line 153 of file type.hpp.

- +
- +
typedef precision::mediump_mat3x4 mat3x4typedef mediump_mat3x4 mat3x4
@@ -603,11 +602,11 @@ Typedefs

3 columns of 4 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 124 of file type.hpp.

+

Definition at line 158 of file type.hpp.

- +
@@ -621,16 +620,16 @@ Typedefs

4 columns of 4 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 156 of file type.hpp.

+

Definition at line 190 of file type.hpp.

- +
- +
typedef precision::mediump_mat4x2 mat4x2typedef mediump_mat4x2 mat4x2
@@ -639,16 +638,16 @@ Typedefs

4 columns of 2 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 129 of file type.hpp.

+

Definition at line 163 of file type.hpp.

- +
- +
typedef precision::mediump_mat4x3 mat4x3typedef mediump_mat4x3 mat4x3
@@ -657,16 +656,16 @@ Typedefs

4 columns of 3 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 134 of file type.hpp.

+

Definition at line 168 of file type.hpp.

- +
- +
typedef precision::mediump_mat4x4 mat4x4typedef mediump_mat4x4 mat4x4
@@ -675,16 +674,16 @@ Typedefs

4 columns of 4 components matrix of floating-point numbers.

(From GLSL 1.30.8 specification, section 4.1.6 Matrices)

-

Definition at line 139 of file type.hpp.

+

Definition at line 173 of file type.hpp.

- +
- +
typedef precision::mediump_uvec2 uvec2typedef mediump_uvec2 uvec2
@@ -693,16 +692,16 @@ Typedefs

2 components vector of unsigned integer numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 209 of file type.hpp.

+

Definition at line 243 of file type.hpp.

- +
- +
typedef precision::mediump_uvec3 uvec3typedef mediump_uvec3 uvec3
@@ -711,16 +710,16 @@ Typedefs

3 components vector of unsigned integer numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 214 of file type.hpp.

+

Definition at line 248 of file type.hpp.

- +
- +
typedef precision::mediump_uvec4 uvec4typedef mediump_uvec4 uvec4
@@ -729,34 +728,16 @@ Typedefs

4 components vector of unsigned integer numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 219 of file type.hpp.

+

Definition at line 253 of file type.hpp.

- +
- - -
typedef precision::mediump_vec2 vec2
-
-
- -

2 components vector of floating-point numbers.

-

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

- -

Definition at line 84 of file type.hpp.

- -
-
- -
-
- - - +
typedef precision::mediump_vec3 vec3typedef mediump_vec3 vec3
@@ -765,16 +746,16 @@ Typedefs

3 components vector of floating-point numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 89 of file type.hpp.

+

Definition at line 123 of file type.hpp.

- +
- +
typedef precision::mediump_vec4 vec4typedef mediump_vec4 vec4
@@ -783,13 +764,13 @@ Typedefs

4 components vector of floating-point numbers.

From GLSL 1.30.8 specification, section 4.1.5 Vectors.

-

Definition at line 94 of file type.hpp.

+

Definition at line 128 of file type.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00236.html b/doc/api-0.9.3/a00156.html similarity index 72% rename from doc/api-0.9.2/a00236.html rename to doc/api-0.9.3/a00156.html index 79ce180d..6b2fc933 100644 --- a/doc/api-0.9.2/a00236.html +++ b/doc/api-0.9.3/a00156.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

Precision types

+

Non-GLSL types that are used to define precision-based types. -More...

+More...

- - - - - + + + + + +< highp_float >  +< highp_float >  +< highp_float >  +< highp_float >  +< highp_float >  +< highp_float >  +< highp_float >  +< highp_float >  - - - - +< highp_float >  + + + + +< highp_float >  +< highp_float >  - - - - - +< highp_float >  + + + + + +< lowp_float >  +< lowp_float >  +< lowp_float >  +< lowp_float >  +< lowp_float >  +< lowp_float >  +< lowp_float >  +< lowp_float >  - - - - - - - - - +< lowp_float >  + + + + + + + + + +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_float >  +< mediump_float >  +< mediump_float >  +< mediump_float >  +< mediump_float >  +< mediump_float >  +< mediump_float >  +< mediump_float >  - +< mediump_float >  + +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_float >  +< mediump_float >  +< mediump_float > 

Typedefs

typedef highp_float_t highp_float
typedef detail::highp_int_t highp_int
typedef detail::tvec2< highp_int > highp_ivec2
typedef detail::tvec3< highp_int > highp_ivec3
typedef detail::tvec4< highp_int > highp_ivec4
typedef highp_float_t highp_float
typedef detail::highp_int_t highp_int
typedef detail::tvec2< highp_int > highp_ivec2
typedef detail::tvec3< highp_int > highp_ivec3
typedef detail::tvec4< highp_int > highp_ivec4
typedef detail::tmat2x2
-< highp_float > 
highp_mat2
highp_mat2
typedef detail::tmat2x2
-< highp_float > 
highp_mat2x2
highp_mat2x2
typedef detail::tmat2x3
-< highp_float > 
highp_mat2x3
highp_mat2x3
typedef detail::tmat3x3
-< highp_float > 
highp_mat3
highp_mat3
typedef detail::tmat3x3
-< highp_float > 
highp_mat3x3
highp_mat3x3
typedef detail::tmat4x4
-< highp_float > 
highp_mat4
highp_mat4
typedef detail::tmat4x2
-< highp_float > 
highp_mat4x2
highp_mat4x2
typedef detail::tmat4x3
-< highp_float > 
highp_mat4x3
highp_mat4x3
typedef detail::tmat4x4
-< highp_float > 
highp_mat4x4
typedef detail::highp_uint_t highp_uint
typedef detail::tvec2< highp_uint > highp_uvec2
typedef detail::tvec3< highp_uint > highp_uvec3
typedef detail::tvec4< highp_uint > highp_uvec4
highp_mat4x4
typedef detail::highp_uint_t highp_uint
typedef detail::tvec2< highp_uint > highp_uvec2
typedef detail::tvec3< highp_uint > highp_uvec3
typedef detail::tvec4< highp_uint > highp_uvec4
typedef detail::tvec2
-< highp_float > 
highp_vec2
highp_vec2
typedef detail::tvec3
-< highp_float > 
highp_vec3
highp_vec3
typedef detail::tvec4
-< highp_float > 
highp_vec4
typedef lowp_float_t lowp_float
typedef detail::lowp_int_t lowp_int
typedef detail::tvec2< lowp_int > lowp_ivec2
typedef detail::tvec3< lowp_int > lowp_ivec3
typedef detail::tvec4< lowp_int > lowp_ivec4
highp_vec4
typedef lowp_float_t lowp_float
typedef detail::lowp_int_t lowp_int
typedef detail::tvec2< lowp_int > lowp_ivec2
typedef detail::tvec3< lowp_int > lowp_ivec3
typedef detail::tvec4< lowp_int > lowp_ivec4
typedef detail::tmat2x2
-< lowp_float > 
lowp_mat2
lowp_mat2
typedef detail::tmat2x2
-< lowp_float > 
lowp_mat2x2
lowp_mat2x2
typedef detail::tmat2x3
-< lowp_float > 
lowp_mat2x3
lowp_mat2x3
typedef detail::tmat3x3
-< lowp_float > 
lowp_mat3
lowp_mat3
typedef detail::tmat3x3
-< lowp_float > 
lowp_mat3x3
lowp_mat3x3
typedef detail::tmat4x4
-< lowp_float > 
lowp_mat4
lowp_mat4
typedef detail::tmat4x2
-< lowp_float > 
lowp_mat4x2
lowp_mat4x2
typedef detail::tmat4x3
-< lowp_float > 
lowp_mat4x3
lowp_mat4x3
typedef detail::tmat4x4
-< lowp_float > 
lowp_mat4x4
typedef detail::lowp_uint_t lowp_uint
typedef detail::tvec2< lowp_uint > lowp_uvec2
typedef detail::tvec3< lowp_uint > lowp_uvec3
typedef detail::tvec4< lowp_uint > lowp_uvec4
typedef detail::tvec2< lowp_float > lowp_vec2
typedef detail::tvec3< lowp_float > lowp_vec3
typedef detail::tvec4< lowp_float > lowp_vec4
typedef mediump_float_t mediump_float
typedef detail::mediump_int_t mediump_int
lowp_mat4x4
typedef detail::lowp_uint_t lowp_uint
typedef detail::tvec2< lowp_uint > lowp_uvec2
typedef detail::tvec3< lowp_uint > lowp_uvec3
typedef detail::tvec4< lowp_uint > lowp_uvec4
typedef detail::tvec2< lowp_float > lowp_vec2
typedef detail::tvec3< lowp_float > lowp_vec3
typedef detail::tvec4< lowp_float > lowp_vec4
typedef mediump_float_t mediump_float
typedef detail::mediump_int_t mediump_int
typedef detail::tvec2
-< mediump_int > 
mediump_ivec2
mediump_ivec2
typedef detail::tvec3
-< mediump_int > 
mediump_ivec3
mediump_ivec3
typedef detail::tvec4
-< mediump_int > 
mediump_ivec4
mediump_ivec4
typedef detail::tmat2x2
-< mediump_float > 
mediump_mat2
mediump_mat2
typedef detail::tmat2x2
-< mediump_float > 
mediump_mat2x2
mediump_mat2x2
typedef detail::tmat2x3
-< mediump_float > 
mediump_mat2x3
mediump_mat2x3
typedef detail::tmat3x3
-< mediump_float > 
mediump_mat3
mediump_mat3
typedef detail::tmat3x3
-< mediump_float > 
mediump_mat3x3
mediump_mat3x3
typedef detail::tmat4x4
-< mediump_float > 
mediump_mat4
mediump_mat4
typedef detail::tmat4x2
-< mediump_float > 
mediump_mat4x2
mediump_mat4x2
typedef detail::tmat4x3
-< mediump_float > 
mediump_mat4x3
mediump_mat4x3
typedef detail::tmat4x4
-< mediump_float > 
mediump_mat4x4
typedef detail::mediump_uint_t mediump_uint
mediump_mat4x4
typedef detail::mediump_uint_t mediump_uint
typedef detail::tvec2
-< mediump_uint > 
mediump_uvec2
mediump_uvec2
typedef detail::tvec3
-< mediump_uint > 
mediump_uvec3
mediump_uvec3
typedef detail::tvec4
-< mediump_uint > 
mediump_uvec4
mediump_uvec4
typedef detail::tvec2
-< mediump_float > 
mediump_vec2
mediump_vec2
typedef detail::tvec3
-< mediump_float > 
mediump_vec3
mediump_vec3
typedef detail::tvec4
-< mediump_float > 
mediump_vec4
mediump_vec4
-

Detailed Description

+

Detailed Description

Non-GLSL types that are used to define precision-based types.

The GLSL language allows the user to define the precision of a particular variable. In OpenGL's GLSL, these precision qualifiers have no effect; they are there for compatibility with OpenGL ES's precision qualifiers, where they do have an effect.

-

C++ has no language equivalent to precision qualifiers. So GLM provides the next-best thing: a number of typedefs of the Template types that use a particular precision.

+

C++ has no language equivalent to precision qualifiers. So GLM provides the next-best thing: a number of typedefs of the Template types that use a particular precision.

None of these types make any guarantees about the actual precision used.


Typedef Documentation

- +
@@ -164,11 +164,11 @@ Typedefs

High precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification

-

Definition at line 54 of file type_float.hpp.

+

Definition at line 70 of file type_float.hpp.

- +
@@ -182,11 +182,11 @@ Typedefs

High precision signed integer.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification.

-

Definition at line 58 of file type_int.hpp.

+

Definition at line 75 of file type_int.hpp.

- +
@@ -200,11 +200,11 @@ Typedefs

2 components vector of high precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 224 of file type_vec2.hpp.

+

Definition at line 269 of file type_vec2.hpp.

- +
@@ -218,11 +218,11 @@ Typedefs

3 components vector of high precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 237 of file type_vec3.hpp.

+

Definition at line 294 of file type_vec3.hpp.

- +
@@ -236,11 +236,11 @@ Typedefs

4 components vector of high precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 270 of file type_vec4.hpp.

+

Definition at line 351 of file type_vec4.hpp.

- +
@@ -254,11 +254,11 @@ Typedefs

2 columns of 2 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 252 of file type_mat2x2.hpp.

+

Definition at line 278 of file type_mat2x2.hpp.

- +
@@ -272,11 +272,11 @@ Typedefs

2 columns of 2 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 270 of file type_mat2x2.hpp.

+

Definition at line 296 of file type_mat2x2.hpp.

- +
@@ -290,11 +290,11 @@ Typedefs

2 columns of 3 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 217 of file type_mat2x3.hpp.

+

Definition at line 244 of file type_mat2x3.hpp.

- +
@@ -308,11 +308,11 @@ Typedefs

3 columns of 3 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 254 of file type_mat3x3.hpp.

+

Definition at line 280 of file type_mat3x3.hpp.

- +
@@ -326,11 +326,11 @@ Typedefs

3 columns of 3 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 272 of file type_mat3x3.hpp.

+

Definition at line 298 of file type_mat3x3.hpp.

- +
@@ -344,11 +344,11 @@ Typedefs

4 columns of 4 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 257 of file type_mat4x4.hpp.

+

Definition at line 283 of file type_mat4x4.hpp.

- +
@@ -362,11 +362,11 @@ Typedefs

4 columns of 2 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 231 of file type_mat4x2.hpp.

+

Definition at line 257 of file type_mat4x2.hpp.

- +
@@ -380,11 +380,11 @@ Typedefs

4 columns of 3 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 229 of file type_mat4x3.hpp.

+

Definition at line 255 of file type_mat4x3.hpp.

- +
@@ -398,11 +398,11 @@ Typedefs

4 columns of 4 components matrix of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 275 of file type_mat4x4.hpp.

+

Definition at line 301 of file type_mat4x4.hpp.

- +
@@ -416,11 +416,11 @@ Typedefs

High precision unsigned integer.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification.

-

Definition at line 74 of file type_int.hpp.

+

Definition at line 93 of file type_int.hpp.

- +
@@ -434,11 +434,11 @@ Typedefs

2 components vector of high precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 242 of file type_vec2.hpp.

+

Definition at line 287 of file type_vec2.hpp.

- +
@@ -452,11 +452,11 @@ Typedefs

3 components vector of high precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 255 of file type_vec3.hpp.

+

Definition at line 312 of file type_vec3.hpp.

- +
@@ -470,11 +470,11 @@ Typedefs

4 components vector of high precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 288 of file type_vec4.hpp.

+

Definition at line 369 of file type_vec4.hpp.

- +
@@ -488,11 +488,11 @@ Typedefs

2 components vector of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 206 of file type_vec2.hpp.

+

Definition at line 251 of file type_vec2.hpp.

- +
@@ -506,11 +506,11 @@ Typedefs

3 components vector of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 219 of file type_vec3.hpp.

+

Definition at line 276 of file type_vec3.hpp.

- +
@@ -524,11 +524,11 @@ Typedefs

4 components vector of high precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 252 of file type_vec4.hpp.

+

Definition at line 333 of file type_vec4.hpp.

- +
@@ -542,11 +542,11 @@ Typedefs

Low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification

-

Definition at line 44 of file type_float.hpp.

+

Definition at line 58 of file type_float.hpp.

- +
@@ -560,11 +560,11 @@ Typedefs

Low precision signed integer.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification.

-

Definition at line 48 of file type_int.hpp.

+

Definition at line 63 of file type_int.hpp.

- +
@@ -578,11 +578,11 @@ Typedefs

2 components vector of low precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 236 of file type_vec2.hpp.

+

Definition at line 281 of file type_vec2.hpp.

- +
@@ -596,11 +596,11 @@ Typedefs

3 components vector of low precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 249 of file type_vec3.hpp.

+

Definition at line 306 of file type_vec3.hpp.

- +
@@ -614,11 +614,11 @@ Typedefs

4 components vector of low precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 282 of file type_vec4.hpp.

+

Definition at line 363 of file type_vec4.hpp.

- +
@@ -632,11 +632,11 @@ Typedefs

2 columns of 2 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 240 of file type_mat2x2.hpp.

+

Definition at line 266 of file type_mat2x2.hpp.

- +
@@ -650,11 +650,11 @@ Typedefs

2 columns of 2 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 258 of file type_mat2x2.hpp.

+

Definition at line 284 of file type_mat2x2.hpp.

- +
@@ -668,11 +668,11 @@ Typedefs

2 columns of 3 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 207 of file type_mat2x3.hpp.

+

Definition at line 232 of file type_mat2x3.hpp.

- +
@@ -686,11 +686,11 @@ Typedefs

3 columns of 3 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 244 of file type_mat3x3.hpp.

+

Definition at line 270 of file type_mat3x3.hpp.

- +
@@ -704,11 +704,11 @@ Typedefs

3 columns of 3 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 260 of file type_mat3x3.hpp.

+

Definition at line 286 of file type_mat3x3.hpp.

- +
@@ -722,11 +722,11 @@ Typedefs

4 columns of 4 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 245 of file type_mat4x4.hpp.

+

Definition at line 271 of file type_mat4x4.hpp.

- +
@@ -740,11 +740,11 @@ Typedefs

4 columns of 2 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 219 of file type_mat4x2.hpp.

+

Definition at line 245 of file type_mat4x2.hpp.

- +
@@ -758,11 +758,11 @@ Typedefs

4 columns of 3 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 217 of file type_mat4x3.hpp.

+

Definition at line 243 of file type_mat4x3.hpp.

- +
@@ -776,11 +776,11 @@ Typedefs

4 columns of 4 components matrix of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 263 of file type_mat4x4.hpp.

+

Definition at line 289 of file type_mat4x4.hpp.

- +
@@ -794,11 +794,11 @@ Typedefs

Low precision unsigned integer.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification.

-

Definition at line 64 of file type_int.hpp.

+

Definition at line 81 of file type_int.hpp.

- +
@@ -812,11 +812,11 @@ Typedefs

2 components vector of low precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 254 of file type_vec2.hpp.

+

Definition at line 299 of file type_vec2.hpp.

- +
@@ -830,11 +830,11 @@ Typedefs

3 components vector of low precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 267 of file type_vec3.hpp.

+

Definition at line 324 of file type_vec3.hpp.

- +
@@ -848,11 +848,11 @@ Typedefs

4 components vector of low precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 300 of file type_vec4.hpp.

+

Definition at line 381 of file type_vec4.hpp.

- +
@@ -866,11 +866,11 @@ Typedefs

2 components vector of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 218 of file type_vec2.hpp.

+

Definition at line 263 of file type_vec2.hpp.

- +
@@ -884,11 +884,11 @@ Typedefs

3 components vector of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 231 of file type_vec3.hpp.

+

Definition at line 288 of file type_vec3.hpp.

- +
@@ -902,11 +902,11 @@ Typedefs

4 components vector of low precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 264 of file type_vec4.hpp.

+

Definition at line 345 of file type_vec4.hpp.

- +
@@ -920,11 +920,11 @@ Typedefs

Medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification

-

Definition at line 49 of file type_float.hpp.

+

Definition at line 64 of file type_float.hpp.

- +
@@ -938,11 +938,11 @@ Typedefs

Medium precision signed integer.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification.

-

Definition at line 53 of file type_int.hpp.

+

Definition at line 69 of file type_int.hpp.

- +
@@ -956,11 +956,11 @@ Typedefs

2 components vector of medium precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 230 of file type_vec2.hpp.

+

Definition at line 275 of file type_vec2.hpp.

- +
@@ -974,11 +974,11 @@ Typedefs

3 components vector of medium precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 243 of file type_vec3.hpp.

+

Definition at line 300 of file type_vec3.hpp.

- +
@@ -992,11 +992,11 @@ Typedefs

4 components vector of medium precision signed integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 276 of file type_vec4.hpp.

+

Definition at line 357 of file type_vec4.hpp.

- +
@@ -1010,11 +1010,11 @@ Typedefs

2 columns of 2 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 246 of file type_mat2x2.hpp.

+

Definition at line 272 of file type_mat2x2.hpp.

- +
@@ -1028,11 +1028,11 @@ Typedefs

2 columns of 2 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 264 of file type_mat2x2.hpp.

+

Definition at line 290 of file type_mat2x2.hpp.

- +
@@ -1046,11 +1046,11 @@ Typedefs

2 columns of 3 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 212 of file type_mat2x3.hpp.

+

Definition at line 238 of file type_mat2x3.hpp.

- +
@@ -1064,11 +1064,11 @@ Typedefs

3 columns of 3 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 249 of file type_mat3x3.hpp.

+

Definition at line 275 of file type_mat3x3.hpp.

- +
@@ -1082,11 +1082,11 @@ Typedefs

3 columns of 3 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 266 of file type_mat3x3.hpp.

+

Definition at line 292 of file type_mat3x3.hpp.

- +
@@ -1100,11 +1100,11 @@ Typedefs

4 columns of 4 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 251 of file type_mat4x4.hpp.

+

Definition at line 277 of file type_mat4x4.hpp.

- +
@@ -1118,11 +1118,11 @@ Typedefs

4 columns of 2 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 225 of file type_mat4x2.hpp.

+

Definition at line 251 of file type_mat4x2.hpp.

- +
@@ -1136,11 +1136,11 @@ Typedefs

4 columns of 3 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)

-

Definition at line 223 of file type_mat4x3.hpp.

+

Definition at line 249 of file type_mat4x3.hpp.

- +
@@ -1154,11 +1154,11 @@ Typedefs

4 columns of 4 components matrix of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers

-

Definition at line 269 of file type_mat4x4.hpp.

+

Definition at line 295 of file type_mat4x4.hpp.

- +
@@ -1172,11 +1172,11 @@ Typedefs

Medium precision unsigned integer.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification.

-

Definition at line 69 of file type_int.hpp.

+

Definition at line 87 of file type_int.hpp.

- +
@@ -1190,11 +1190,11 @@ Typedefs

2 components vector of medium precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 248 of file type_vec2.hpp.

+

Definition at line 293 of file type_vec2.hpp.

- +
@@ -1208,11 +1208,11 @@ Typedefs

3 components vector of medium precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 261 of file type_vec3.hpp.

+

Definition at line 318 of file type_vec3.hpp.

- +
@@ -1226,11 +1226,11 @@ Typedefs

4 components vector of medium precision unsigned integer numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.

-

Definition at line 294 of file type_vec4.hpp.

+

Definition at line 375 of file type_vec4.hpp.

- +
@@ -1244,11 +1244,11 @@ Typedefs

2 components vector of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 212 of file type_vec2.hpp.

+

Definition at line 257 of file type_vec2.hpp.

- +
@@ -1262,11 +1262,11 @@ Typedefs

3 components vector of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 225 of file type_vec3.hpp.

+

Definition at line 282 of file type_vec3.hpp.

- +
@@ -1280,13 +1280,13 @@ Typedefs

4 components vector of medium precision floating-point numbers.

There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.

-

Definition at line 258 of file type_vec4.hpp.

+

Definition at line 339 of file type_vec4.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00237.html b/doc/api-0.9.3/a00157.html similarity index 69% rename from doc/api-0.9.2/a00237.html rename to doc/api-0.9.3/a00157.html index 43b4f51b..04b74376 100644 --- a/doc/api-0.9.2/a00237.html +++ b/doc/api-0.9.3/a00157.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

Template types

+

The generic template types used as the basis for the core types. -More...

+More...

- - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  tmat2x2< T >
 Template for 2 * 2 matrix of floating-point numbers. More...
struct  tmat2x3< T >
 Template for 2 columns and 3 rows matrix of floating-point numbers. More...
struct  tmat2x4< T >
 Template for 2 columns and 4 rows matrix of floating-point numbers. More...
struct  tmat3x2< T >
 Template for 3 columns and 2 rows matrix of floating-point numbers. More...
struct  tmat3x3< T >
 Template for 3 * 3 matrix of floating-point numbers. More...
struct  tmat3x4< T >
 Template for 3 columns and 4 rows matrix of floating-point numbers. More...
struct  tmat4x2< T >
 Template for 4 columns and 2 rows matrix of floating-point numbers. More...
struct  tmat4x3< T >
 Template for 4 columns and 3 rows matrix of floating-point numbers. More...
struct  tmat4x4< T >
 Template for 4 * 4 matrix of floating-point numbers. More...
struct  tvec2< T >
 The basic 2D vector type. More...
struct  tvec3< T >
 Basic 3D vector type. More...
struct  tvec4< T >
 Basic 4D vector type. More...
struct  tmat2x2< T >
 Template for 2 * 2 matrix of floating-point numbers. More...
struct  tmat2x3< T >
 Template for 2 columns and 3 rows matrix of floating-point numbers. More...
struct  tmat2x4< T >
 Template for 2 columns and 4 rows matrix of floating-point numbers. More...
struct  tmat3x2< T >
 Template for 3 columns and 2 rows matrix of floating-point numbers. More...
struct  tmat3x3< T >
 Template for 3 * 3 matrix of floating-point numbers. More...
struct  tmat3x4< T >
 Template for 3 columns and 4 rows matrix of floating-point numbers. More...
struct  tmat4x2< T >
 Template for 4 columns and 2 rows matrix of floating-point numbers. More...
struct  tmat4x3< T >
 Template for 4 columns and 3 rows matrix of floating-point numbers. More...
struct  tmat4x4< T >
 Template for 4 * 4 matrix of floating-point numbers. More...
struct  tvec2< T >
 The basic 2D vector type. More...
struct  tvec3< T >
 Basic 3D vector type. More...
struct  tvec4< T >
 Basic 4D vector type. More...
-

Detailed Description

+

Detailed Description

The generic template types used as the basis for the core types.

-

These types are all templates used to define the actual Types. These templetes are implementation details of GLM types and should not be used explicitly.

+

These types are all templates used to define the actual Types. These templetes are implementation details of GLM types and should not be used explicitly.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00240.html b/doc/api-0.9.3/a00158.html similarity index 68% rename from doc/api-0.9.2/a00240.html rename to doc/api-0.9.3/a00158.html index ef9498ae..03dc755a 100644 --- a/doc/api-0.9.2/a00240.html +++ b/doc/api-0.9.3/a00158.html @@ -2,18 +2,18 @@ -GLM_GTC_half_float: Half-precision floating-point based types and functions. +GLM_GTC_half_float: Half-precision floating-point based types and functions - +
- +
@@ -21,8 +21,8 @@
-
GLM_GTC_half_float: Half-precision floating-point based types and functions.
-
+

GLM_GTC_half_float: Half-precision floating-point based types and functions

+
+ +

Defines the half-precision floating-point type, along with various typedefs for vectors and matrices. +More...

- - + + - + +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf >  +< detail::thalf > 

Classes

class  thalf
 16-bit floating point type. More...
class  thalf
 16-bit floating point type. More...

Typedefs

typedef detail::thalf half
typedef detail::thalf half
typedef detail::tmat2x2
-< detail::thalf > 
hmat2
hmat2
typedef detail::tmat2x2
-< detail::thalf > 
hmat2x2
hmat2x2
typedef detail::tmat2x3
-< detail::thalf > 
hmat2x3
hmat2x3
typedef detail::tmat2x4
-< detail::thalf > 
hmat2x4
hmat2x4
typedef detail::tmat3x3
-< detail::thalf > 
hmat3
hmat3
typedef detail::tmat3x2
-< detail::thalf > 
hmat3x2
hmat3x2
typedef detail::tmat3x3
-< detail::thalf > 
hmat3x3
hmat3x3
typedef detail::tmat3x4
-< detail::thalf > 
hmat3x4
hmat3x4
typedef detail::tmat4x4
-< detail::thalf > 
hmat4
hmat4
typedef detail::tmat4x2
-< detail::thalf > 
hmat4x2
hmat4x2
typedef detail::tmat4x3
-< detail::thalf > 
hmat4x3
hmat4x3
typedef detail::tmat4x4
-< detail::thalf > 
hmat4x4
hmat4x4
typedef detail::tvec2
-< detail::thalf > 
hvec2
hvec2
typedef detail::tvec3
-< detail::thalf > 
hvec3
hvec3
typedef detail::tvec4
-< detail::thalf > 
hvec4
hvec4
-

Detailed Description

-

Defines the half-precision floating-point type, along with various typedefs for vectors and matrices. <glm/gtc/half_float.hpp> need to be included to use these functionalities.

+

Detailed Description

+

Defines the half-precision floating-point type, along with various typedefs for vectors and matrices.

+

<glm/gtc/half_float.hpp> need to be included to use these functionalities.


Typedef Documentation

- +
@@ -92,11 +96,11 @@ Typedefs

Type for half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 332 of file half_float.hpp.

+

Definition at line 357 of file half_float.hpp.

- +
@@ -110,11 +114,11 @@ Typedefs

2 * 2 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 348 of file half_float.hpp.

+

Definition at line 373 of file half_float.hpp.

- +
@@ -128,11 +132,11 @@ Typedefs

2 * 2 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 360 of file half_float.hpp.

+

Definition at line 385 of file half_float.hpp.

- +
@@ -146,11 +150,11 @@ Typedefs

2 * 3 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 364 of file half_float.hpp.

+

Definition at line 389 of file half_float.hpp.

- +
@@ -164,11 +168,11 @@ Typedefs

2 * 4 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 368 of file half_float.hpp.

+

Definition at line 393 of file half_float.hpp.

- +
@@ -182,11 +186,11 @@ Typedefs

3 * 3 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 352 of file half_float.hpp.

+

Definition at line 377 of file half_float.hpp.

- +
@@ -200,11 +204,11 @@ Typedefs

3 * 2 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 372 of file half_float.hpp.

+

Definition at line 397 of file half_float.hpp.

- +
@@ -218,11 +222,11 @@ Typedefs

3 * 3 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 376 of file half_float.hpp.

+

Definition at line 401 of file half_float.hpp.

- +
@@ -236,11 +240,11 @@ Typedefs

3 * 4 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 380 of file half_float.hpp.

+

Definition at line 405 of file half_float.hpp.

- +
@@ -254,11 +258,11 @@ Typedefs

4 * 4 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 356 of file half_float.hpp.

+

Definition at line 381 of file half_float.hpp.

- +
@@ -272,11 +276,11 @@ Typedefs

4 * 2 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 384 of file half_float.hpp.

+

Definition at line 409 of file half_float.hpp.

- +
@@ -290,11 +294,11 @@ Typedefs

4 * 3 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 388 of file half_float.hpp.

+

Definition at line 413 of file half_float.hpp.

- +
@@ -308,11 +312,11 @@ Typedefs

4 * 4 matrix of half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 392 of file half_float.hpp.

+

Definition at line 417 of file half_float.hpp.

- +
@@ -326,11 +330,11 @@ Typedefs

Vector of 2 half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 336 of file half_float.hpp.

+

Definition at line 361 of file half_float.hpp.

- +
@@ -344,11 +348,11 @@ Typedefs

Vector of 3 half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 340 of file half_float.hpp.

+

Definition at line 365 of file half_float.hpp.

- +
@@ -362,13 +366,13 @@ Typedefs

Vector of 4 half-precision floating-point numbers.

From GLM_GTC_half_float extension.

-

Definition at line 344 of file half_float.hpp.

+

Definition at line 369 of file half_float.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00241.html b/doc/api-0.9.3/a00159.html similarity index 63% rename from doc/api-0.9.2/a00241.html rename to doc/api-0.9.3/a00159.html index f6657e22..4c8924e8 100644 --- a/doc/api-0.9.2/a00241.html +++ b/doc/api-0.9.3/a00159.html @@ -2,18 +2,18 @@ -GLM_GTC_matrix_access: Access matrix rows and columns. +GLM_GTC_matrix_access: Access matrix rows and columns - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTC_matrix_access: Access matrix rows and columns

+
+ +

Defines functions to access rows or columns of a matrix easily. +More...

- + - + - + - +

Functions

template<typename genType >
genType::col_type column (genType const &m, int index)
genType::col_type column (genType const &m, int index)
template<typename genType >
genType column (genType const &m, int index, typename genType::col_type const &x)
genType column (genType const &m, int index, typename genType::col_type const &x)
template<typename genType >
genType::row_type row (genType const &m, int index)
genType::row_type row (genType const &m, int index)
template<typename genType >
genType row (genType const &m, int index, typename genType::row_type const &x)
genType row (genType const &m, int index, typename genType::row_type const &x)
-

Detailed Description

-

Defines functions to access rows or columns of a matrix easily. <glm/gtc/matrix_access.hpp> need to be included to use these functionalities.

+

Detailed Description

+

Defines functions to access rows or columns of a matrix easily.

+

<glm/gtc/matrix_access.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -76,16 +80,16 @@ Functions

Get a specific column of a matrix.

-

From GLM_GTC_matrix_access extension.

+
See also:
- GLM_GTC_matrix_access: Access matrix rows and columns
- +
genType::col_type glm::gtc::matrix_access::column genType::col_type glm::column ( genType const &  m,
- + @@ -112,16 +116,16 @@ Functions

Set a specific column to a matrix.

-

From GLM_GTC_matrix_access extension.

+
See also:
- GLM_GTC_matrix_access: Access matrix rows and columns
- +
genType glm::gtc::matrix_access::column genType glm::column ( genType const &  m,
- + @@ -142,16 +146,16 @@ Functions

Get a specific row of a matrix.

-

From GLM_GTC_matrix_access extension.

+
See also:
- GLM_GTC_matrix_access: Access matrix rows and columns
- +
genType::row_type glm::gtc::matrix_access::row genType::row_type glm::row ( genType const &  m,
- + @@ -178,13 +182,13 @@ Functions

Set a specific row to a matrix.

-

From GLM_GTC_matrix_access extension.

+
See also:
- GLM_GTC_matrix_access: Access matrix rows and columns
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00242.html b/doc/api-0.9.3/a00160.html similarity index 83% rename from doc/api-0.9.2/a00242.html rename to doc/api-0.9.3/a00160.html index e57b96a7..6041d41a 100644 --- a/doc/api-0.9.2/a00242.html +++ b/doc/api-0.9.3/a00160.html @@ -2,18 +2,18 @@ -GLM_GTC_matrix_integer: Integer matrix types. +GLM_GTC_matrix_integer: Integer matrix types - +
genType glm::gtc::matrix_access::row genType glm::row ( genType const &  m,
- +
@@ -21,8 +21,8 @@ +

GLM_GTC_matrix_integer: Integer matrix types

+
+ +

Defines a number of matrices with integer types. +More...

+< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_int >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +< highp_uint >  +typedef mediump_imat2  +typedef mediump_imat2x2  +typedef mediump_imat2x3  +typedef mediump_imat2x4  +typedef mediump_imat3  +typedef mediump_imat3x2  +typedef mediump_imat3x3  +typedef mediump_imat3x4  +typedef mediump_imat4  +typedef mediump_imat4x2  +typedef mediump_imat4x3  +typedef mediump_imat4x4  +typedef detail::tmat2x2< lowp_int >  +typedef detail::tmat2x2< lowp_int >  +typedef detail::tmat2x3< lowp_int >  +typedef detail::tmat2x4< lowp_int >  +typedef detail::tmat3x3< lowp_int >  +typedef detail::tmat3x2< lowp_int >  +typedef detail::tmat3x3< lowp_int >  +typedef detail::tmat3x4< lowp_int >  +typedef detail::tmat4x4< lowp_int >  +typedef detail::tmat4x2< lowp_int >  +typedef detail::tmat4x3< lowp_int >  +typedef detail::tmat4x4< lowp_int >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< lowp_uint >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_int >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +< mediump_uint >  +typedef mediump_umat2  +typedef mediump_umat2x2  +typedef mediump_umat2x3  +typedef mediump_umat2x4  +typedef mediump_umat3  +typedef mediump_umat3x2  +typedef mediump_umat3x3  +typedef mediump_umat3x4  +typedef mediump_umat4  +typedef mediump_umat4x2  +typedef mediump_umat4x3  +typedef mediump_umat4x4 

Typedefs

typedef detail::tmat2x2
-< highp_int > 
highp_imat2
highp_imat2
typedef detail::tmat2x2
-< highp_int > 
highp_imat2x2
highp_imat2x2
typedef detail::tmat2x3
-< highp_int > 
highp_imat2x3
highp_imat2x3
typedef detail::tmat2x4
-< highp_int > 
highp_imat2x4
highp_imat2x4
typedef detail::tmat3x3
-< highp_int > 
highp_imat3
highp_imat3
typedef detail::tmat3x2
-< highp_int > 
highp_imat3x2
highp_imat3x2
typedef detail::tmat3x3
-< highp_int > 
highp_imat3x3
highp_imat3x3
typedef detail::tmat3x4
-< highp_int > 
highp_imat3x4
highp_imat3x4
typedef detail::tmat4x4
-< highp_int > 
highp_imat4
highp_imat4
typedef detail::tmat4x2
-< highp_int > 
highp_imat4x2
highp_imat4x2
typedef detail::tmat4x3
-< highp_int > 
highp_imat4x3
highp_imat4x3
typedef detail::tmat4x4
-< highp_int > 
highp_imat4x4
highp_imat4x4
typedef detail::tmat2x2
-< highp_uint > 
highp_umat2
highp_umat2
typedef detail::tmat2x2
-< highp_uint > 
highp_umat2x2
highp_umat2x2
typedef detail::tmat2x3
-< highp_uint > 
highp_umat2x3
highp_umat2x3
typedef detail::tmat2x4
-< highp_uint > 
highp_umat2x4
highp_umat2x4
typedef detail::tmat3x3
-< highp_uint > 
highp_umat3
highp_umat3
typedef detail::tmat3x2
-< highp_uint > 
highp_umat3x2
highp_umat3x2
typedef detail::tmat3x3
-< highp_uint > 
highp_umat3x3
highp_umat3x3
typedef detail::tmat3x4
-< highp_uint > 
highp_umat3x4
highp_umat3x4
typedef detail::tmat4x4
-< highp_uint > 
highp_umat4
highp_umat4
typedef detail::tmat4x2
-< highp_uint > 
highp_umat4x2
highp_umat4x2
typedef detail::tmat4x3
-< highp_uint > 
highp_umat4x3
highp_umat4x3
typedef detail::tmat4x4
-< highp_uint > 
highp_umat4x4
highp_umat4x4
-typedef mediump_imat2 imat2
imat2
-typedef mediump_imat2x2 imat2x2
imat2x2
-typedef mediump_imat2x3 imat2x3
imat2x3
-typedef mediump_imat2x4 imat2x4
imat2x4
-typedef mediump_imat3 imat3
imat3
-typedef mediump_imat3x2 imat3x2
imat3x2
-typedef mediump_imat3x3 imat3x3
imat3x3
-typedef mediump_imat3x4 imat3x4
imat3x4
-typedef mediump_imat4 imat4
imat4
-typedef mediump_imat4x2 imat4x2
imat4x2
-typedef mediump_imat4x3 imat4x3
imat4x3
-typedef mediump_imat4x4 imat4x4
imat4x4
-typedef detail::tmat2x2< lowp_int > lowp_imat2
lowp_imat2
-typedef detail::tmat2x2< lowp_int > lowp_imat2x2
lowp_imat2x2
-typedef detail::tmat2x3< lowp_int > lowp_imat2x3
lowp_imat2x3
-typedef detail::tmat2x4< lowp_int > lowp_imat2x4
lowp_imat2x4
-typedef detail::tmat3x3< lowp_int > lowp_imat3
lowp_imat3
-typedef detail::tmat3x2< lowp_int > lowp_imat3x2
lowp_imat3x2
-typedef detail::tmat3x3< lowp_int > lowp_imat3x3
lowp_imat3x3
-typedef detail::tmat3x4< lowp_int > lowp_imat3x4
lowp_imat3x4
-typedef detail::tmat4x4< lowp_int > lowp_imat4
lowp_imat4
-typedef detail::tmat4x2< lowp_int > lowp_imat4x2
lowp_imat4x2
-typedef detail::tmat4x3< lowp_int > lowp_imat4x3
lowp_imat4x3
-typedef detail::tmat4x4< lowp_int > lowp_imat4x4
lowp_imat4x4
typedef detail::tmat2x2
-< lowp_uint > 
lowp_umat2
lowp_umat2
typedef detail::tmat2x2
-< lowp_uint > 
lowp_umat2x2
lowp_umat2x2
typedef detail::tmat2x3
-< lowp_uint > 
lowp_umat2x3
lowp_umat2x3
typedef detail::tmat2x4
-< lowp_uint > 
lowp_umat2x4
lowp_umat2x4
typedef detail::tmat3x3
-< lowp_uint > 
lowp_umat3
lowp_umat3
typedef detail::tmat3x2
-< lowp_uint > 
lowp_umat3x2
lowp_umat3x2
typedef detail::tmat3x3
-< lowp_uint > 
lowp_umat3x3
lowp_umat3x3
typedef detail::tmat3x4
-< lowp_uint > 
lowp_umat3x4
lowp_umat3x4
typedef detail::tmat4x4
-< lowp_uint > 
lowp_umat4
lowp_umat4
typedef detail::tmat4x2
-< lowp_uint > 
lowp_umat4x2
lowp_umat4x2
typedef detail::tmat4x3
-< lowp_uint > 
lowp_umat4x3
lowp_umat4x3
typedef detail::tmat4x4
-< lowp_uint > 
lowp_umat4x4
lowp_umat4x4
typedef detail::tmat2x2
-< mediump_int > 
mediump_imat2
mediump_imat2
typedef detail::tmat2x2
-< mediump_int > 
mediump_imat2x2
mediump_imat2x2
typedef detail::tmat2x3
-< mediump_int > 
mediump_imat2x3
mediump_imat2x3
typedef detail::tmat2x4
-< mediump_int > 
mediump_imat2x4
mediump_imat2x4
typedef detail::tmat3x3
-< mediump_int > 
mediump_imat3
mediump_imat3
typedef detail::tmat3x2
-< mediump_int > 
mediump_imat3x2
mediump_imat3x2
typedef detail::tmat3x3
-< mediump_int > 
mediump_imat3x3
mediump_imat3x3
typedef detail::tmat3x4
-< mediump_int > 
mediump_imat3x4
mediump_imat3x4
typedef detail::tmat4x4
-< mediump_int > 
mediump_imat4
mediump_imat4
typedef detail::tmat4x2
-< mediump_int > 
mediump_imat4x2
mediump_imat4x2
typedef detail::tmat4x3
-< mediump_int > 
mediump_imat4x3
mediump_imat4x3
typedef detail::tmat4x4
-< mediump_int > 
mediump_imat4x4
mediump_imat4x4
typedef detail::tmat2x2
-< mediump_uint > 
mediump_umat2
mediump_umat2
typedef detail::tmat2x2
-< mediump_uint > 
mediump_umat2x2
mediump_umat2x2
typedef detail::tmat2x3
-< mediump_uint > 
mediump_umat2x3
mediump_umat2x3
typedef detail::tmat2x4
-< mediump_uint > 
mediump_umat2x4
mediump_umat2x4
typedef detail::tmat3x3
-< mediump_uint > 
mediump_umat3
mediump_umat3
typedef detail::tmat3x2
-< mediump_uint > 
mediump_umat3x2
mediump_umat3x2
typedef detail::tmat3x3
-< mediump_uint > 
mediump_umat3x3
mediump_umat3x3
typedef detail::tmat3x4
-< mediump_uint > 
mediump_umat3x4
mediump_umat3x4
typedef detail::tmat4x4
-< mediump_uint > 
mediump_umat4
mediump_umat4
typedef detail::tmat4x2
-< mediump_uint > 
mediump_umat4x2
mediump_umat4x2
typedef detail::tmat4x3
-< mediump_uint > 
mediump_umat4x3
mediump_umat4x3
typedef detail::tmat4x4
-< mediump_uint > 
mediump_umat4x4
mediump_umat4x4
-typedef mediump_umat2 umat2
umat2
-typedef mediump_umat2x2 umat2x2
umat2x2
-typedef mediump_umat2x3 umat2x3
umat2x3
-typedef mediump_umat2x4 umat2x4
umat2x4
-typedef mediump_umat3 umat3
umat3
-typedef mediump_umat3x2 umat3x2
umat3x2
-typedef mediump_umat3x3 umat3x3
umat3x3
-typedef mediump_umat3x4 umat3x4
umat3x4
-typedef mediump_umat4 umat4
umat4
-typedef mediump_umat4x2 umat4x2
umat4x2
-typedef mediump_umat4x3 umat4x3
umat4x3
-typedef mediump_umat4x4 umat4x4
umat4x4
-

Detailed Description

-

Defines a number of matrices with integer types. <glm/gtc/matrix_integer.hpp> need to be included to use these functionalities.

+

Detailed Description

+

Defines a number of matrices with integer types.

+

<glm/gtc/matrix_integer.hpp> need to be included to use these functionalities.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00243.html b/doc/api-0.9.3/a00161.html similarity index 50% rename from doc/api-0.9.2/a00243.html rename to doc/api-0.9.3/a00161.html index 7c130c09..8113f526 100644 --- a/doc/api-0.9.2/a00243.html +++ b/doc/api-0.9.3/a00161.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTC_matrix_inverse: Additional matrix inverse function

+
+ +

Defines additional matrix inverting functions. +More...

- + +genType::value_type 

Functions

template<typename genType >
genType affineInverse (genType const &m)
genType affineInverse (genType const &m)
template<typename genType >
GLM_FUNC_QUALIFIER
-genType::value_type 
inverseTranspose (genType const &m)
inverseTranspose (genType const &m)
-

Detailed Description

-

Defines additional matrix inverting functions. <glm/gtc/matrix_inverse.hpp> need to be included to use these functionalities.

+

Detailed Description

+

Defines additional matrix inverting functions.

+

<glm/gtc/matrix_inverse.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -63,16 +67,28 @@ genType::value_type 
genType glm::gtc::matrix_inverse::affineInverse genType glm::affineInverse ( genType const &  m)

Fast matrix inverse for affine matrix.

-

From GLM_GTC_matrix_inverse extension.

+
Parameters:
+ + +
mInput matrix to invert.
+
+
+
Template Parameters:
+ + +
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-precision floating point value is highly innacurate.
+
+
+
See also:
GLM_GTC_matrix_inverse: Additional matrix inverse function
- +
- + @@ -83,13 +99,25 @@ genType::value_type 
GLM_FUNC_QUALIFIER genType::value_type glm::gtc::matrix_inverse::inverseTranspose GLM_FUNC_QUALIFIER genType::value_type glm::inverseTranspose ( genType const &  m)

Compute the inverse transpose of a matrix.

-

From GLM_GTC_matrix_inverse extension.

+
Parameters:
+ + +
mInput matrix to invert transpose.
+
+
+
Template Parameters:
+ + +
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-precision floating point value is highly innacurate.
+
+
+
See also:
GLM_GTC_matrix_inverse: Additional matrix inverse function
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00162.html b/doc/api-0.9.3/a00162.html new file mode 100644 index 00000000..ee20f4fd --- /dev/null +++ b/doc/api-0.9.3/a00162.html @@ -0,0 +1,889 @@ + + + + +GLM_GTC_matrix_transform: Matrix transform functions + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

GLM_GTC_matrix_transform: Matrix transform functions

+
+
+ +

Defines functions that generate common transformation matrices. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
detail::tmat4x4< T > frustum (T const &left, T const &right, T const &bottom, T const &top, T const &near, T const &far)
template<typename T >
detail::tmat4x4< T > infinitePerspective (T fovy, T aspect, T near)
template<typename T >
detail::tmat4x4< T > lookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const &center, detail::tvec3< T > const &up)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top)
template<typename T >
detail::tmat4x4< T > ortho (T const &left, T const &right, T const &bottom, T const &top, T const &zNear, T const &zFar)
template<typename T >
detail::tmat4x4< T > perspective (T const &fovy, T const &aspect, T const &near, T const &far)
template<typename valType >
detail::tmat4x4< valType > perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &near, valType const &far)
template<typename T , typename U >
detail::tmat4x4< T > pickMatrix (detail::tvec2< T > const &center, detail::tvec2< T > const &delta, detail::tvec4< U > const &viewport)
template<typename T , typename U >
detail::tvec3< T > project (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
template<typename T >
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &axis)
template<typename T >
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > tweakedInfinitePerspective (T fovy, T aspect, T near)
template<typename T , typename U >
detail::tvec3< T > unProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport)
+

Detailed Description

+

Defines functions that generate common transformation matrices.

+

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions (perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

+

<glm/gtc/matrix_transform.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::frustum (T const & left,
T const & right,
T const & bottom,
T const & top,
T const & near,
T const & far 
)
+
+
+ +

Creates a frustum matrix.

+
Parameters:
+ + + + + + + +
left
right
bottom
top
near
far
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::infinitePerspective (fovy,
aspect,
near 
)
+
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite.

+
Parameters:
+ + + + +
fovy
aspect
near
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::lookAt (detail::tvec3< T > const & eye,
detail::tvec3< T > const & center,
detail::tvec3< T > const & up 
)
+
+
+ +

Build a look at view matrix.

+
Parameters:
+ + + + +
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+
+- frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal) frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::ortho (T const & left,
T const & right,
T const & bottom,
T const & top 
)
+
+
+ +

Creates a matrix for projecting two-dimensional coordinates onto the screen.

+
Parameters:
+ + + + + +
left
right
bottom
top
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+
+- glm::ortho(T const & left, T const & right, T const & bottom, T const & top, T const & zNear, T const & zFar)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::ortho (T const & left,
T const & right,
T const & bottom,
T const & top,
T const & zNear,
T const & zFar 
)
+
+
+ +

Creates a matrix for an orthographic parallel viewing volume.

+
Parameters:
+ + + + + + + +
left
right
bottom
top
zNear
zFar
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+
+- glm::ortho(T const & left, T const & right, T const & bottom, T const & top)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::perspective (T const & fovy,
T const & aspect,
T const & near,
T const & far 
)
+
+
+ +

Creates a matrix for a symetric perspective-view frustum.

+
Parameters:
+ + + + + +
fovy
aspect
near
far
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<valType> glm::perspectiveFov (valType const & fov,
valType const & width,
valType const & height,
valType const & near,
valType const & far 
)
+
+
+ +

Builds a perspective projection matrix based on a field of view.

+
Parameters:
+ + + + + + +
fov
width
height
near
far
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::pickMatrix (detail::tvec2< T > const & center,
detail::tvec2< T > const & delta,
detail::tvec4< U > const & viewport 
)
+
+
+ +

Define a picking region.

+
Parameters:
+ + + + +
center
delta
viewport
+
+
+
Template Parameters:
+ + + +
TNative type used for the computation. Currently supported: half (not recommanded), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
detail::tvec3<T> glm::project (detail::tvec3< T > const & obj,
detail::tmat4x4< T > const & model,
detail::tmat4x4< T > const & proj,
detail::tvec4< U > const & viewport 
)
+
+
+ +

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.

+
Parameters:
+ + + + + +
obj
model
proj
viewport
+
+
+
Template Parameters:
+ + + +
TNative type used for the computation. Currently supported: half (not recommanded), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::rotate (detail::tmat4x4< T > const & m,
T const & angle,
detail::tvec3< T > const & axis 
)
+
+
+ +

Builds a rotation 4 * 4 matrix created from an axis vector and an angle expressed in degrees.

+
Parameters:
+ + + + +
mInput matrix multiplied by this rotation matrix.
angleRotation angle expressed in degrees.
axisRotation axis, recommanded to be normalized.
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+
+GLM_GTX_transform: Extented transformation matrices
+
+- rotate(T angle, T x, T y, T z)
+
+- rotate(detail::tmat4x4<T> const & m, T angle, T x, T y, T z)
+
+- rotate(T angle, detail::tvec3<T> const & v)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::scale (detail::tmat4x4< T > const & m,
detail::tvec3< T > const & v 
)
+
+
+ +

Builds a scale 4 * 4 matrix created from 3 scalars.

+
Parameters:
+ + + +
mInput matrix multiplied by this scale matrix.
vRatio of scaling for each axis.
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+
+GLM_GTX_transform: Extented transformation matrices
+
+- scale(T x, T y, T z) scale(T const & x, T const & y, T const & z)
+
+- scale(detail::tmat4x4<T> const & m, T x, T y, T z)
+
+- scale(detail::tvec3<T> const & v)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::translate (detail::tmat4x4< T > const & m,
detail::tvec3< T > const & v 
)
+
+
+ +

Builds a translation 4 * 4 matrix created from a vector of 3 components.

+
Parameters:
+ + + +
mInput matrix multiplied by this translation matrix.
vCoordinates of a translation vector.
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.

+
 #include <glm/glm.hpp>
+ #include <glm/gtc/matrix_transform.hpp>
+ ...
+ glm::mat4 m = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f));
+ // m[0][0] == 1.0f, m[0][1] == 0.0f, m[0][2] == 0.0f, m[0][3] == 0.0f
+ // m[1][0] == 0.0f, m[1][1] == 1.0f, m[1][2] == 0.0f, m[1][3] == 0.0f
+ // m[2][0] == 0.0f, m[2][1] == 0.0f, m[2][2] == 1.0f, m[2][3] == 0.0f
+ // m[3][0] == 1.0f, m[3][1] == 1.0f, m[3][2] == 1.0f, m[3][3] == 1.0f
+
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+
+GLM_GTX_transform: Extented transformation matrices
+
+- translate(T x, T y, T z)
+
+- translate(detail::tmat4x4<T> const & m, T x, T y, T z)
+
+- translate(detail::tvec3<T> const & v)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
detail::tmat4x4<T> glm::tweakedInfinitePerspective (fovy,
aspect,
near 
)
+
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

+
Parameters:
+ + + + +
fovy
aspect
near
+
+
+
Template Parameters:
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
detail::tvec3<T> glm::unProject (detail::tvec3< T > const & win,
detail::tmat4x4< T > const & model,
detail::tmat4x4< T > const & proj,
detail::tvec4< U > const & viewport 
)
+
+
+ +

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.

+
Parameters:
+ + + + + +
win
model
proj
viewport
+
+
+
Template Parameters:
+ + + +
TNative type used for the computation. Currently supported: half (not recommanded), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also:
GLM_GTC_matrix_transform: Matrix transform functions
+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00307.html b/doc/api-0.9.3/a00163.html similarity index 57% rename from doc/api-0.9.2/a00307.html rename to doc/api-0.9.3/a00163.html index b9b34b75..8d96931c 100644 --- a/doc/api-0.9.2/a00307.html +++ b/doc/api-0.9.3/a00163.html @@ -2,18 +2,18 @@ -Gtx_noise +GLM_GTC_noise: Procedural noise functions - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTC_noise: Procedural noise functions

+
+ +

Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf <glm/gtc/noise.hpp> need to be included to use these functionalities. +More...

- + - + - +

Functions

template<typename T , template< typename > class vecType>
perlin (vecType< T > const &p)
perlin (vecType< T > const &p)
template<typename T , template< typename > class vecType>
perlin (vecType< T > const &p, vecType< T > const &rep)
perlin (vecType< T > const &p, vecType< T > const &rep)
template<typename T , template< typename > class vecType>
simplex (vecType< T > const &p)
simplex (vecType< T > const &p)
+

Detailed Description

+

Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf <glm/gtc/noise.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -62,16 +67,16 @@ Functions

Classic perlin noise.

-

From GLM_GTX_noise extension.

+

From GLM_GTC_noise extension.

- +
T glm::gtx::noise::perlin T glm::perlin ( vecType< T > const &  p)
- + @@ -92,16 +97,16 @@ Functions

Periodic perlin noise.

-

From GLM_GTX_noise extension.

+

From GLM_GTC_noise extension.

- +
T glm::gtx::noise::perlin T glm::perlin ( vecType< T > const &  p,
- + @@ -112,13 +117,13 @@ Functions

Simplex noise.

-

From GLM_GTX_noise extension.

+

From GLM_GTC_noise extension.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00245.html b/doc/api-0.9.3/a00164.html similarity index 54% rename from doc/api-0.9.2/a00245.html rename to doc/api-0.9.3/a00164.html index 3b1e4b83..1c28ad53 100644 --- a/doc/api-0.9.2/a00245.html +++ b/doc/api-0.9.3/a00164.html @@ -7,13 +7,13 @@ - +
T glm::gtx::noise::simplex T glm::simplex ( vecType< T > const &  p)
- +
@@ -21,8 +21,8 @@
-
GLM_GTC_quaternion: Quaternion types and functions
-
+

GLM_GTC_quaternion: Quaternion types and functions

+

Defines a templated quaternion type and several quaternion operations. -More...

+More...

- - + + - - + + +< highp_float >  - +< detail::thalf >  + - +< mediump_float >  + - + - + - + - + - + - + - + - + - + - + - - - +

Classes

struct  tquat< T >
 Template for quaternion. More...
struct  tquat< T >
 Template for quaternion. More...

Typedefs

typedef detail::tquat< double > dquat
typedef detail::tquat< float > fquat
typedef detail::tquat< double > dquat
typedef detail::tquat< float > fquat
typedef detail::tquat
-< highp_float > 
highp_quat
highp_quat
typedef detail::tquat
-< detail::thalf > 
hquat
typedef detail::tquat< lowp_float > lowp_quat
hquat
typedef detail::tquat< lowp_float > lowp_quat
typedef detail::tquat
-< mediump_float > 
mediump_quat
typedef detail::tquat< float > quat
mediump_quat
typedef detail::tquat< float > quat

Functions

template<typename T >
detail::tquat< T > conjugate (detail::tquat< T > const &q)
detail::tquat< T > conjugate (detail::tquat< T > const &q)
template<typename T >
GLM_DEPRECATED detail::tquat< T > cross (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
template<typename T >
detail::tquat< T >::value_type dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2)
detail::tquat< T > inverse (detail::tquat< T > const &q)
template<typename T >
detail::tquat< T > inverse (detail::tquat< T > const &q)
length (detail::tquat< T > const &q)
template<typename T >
detail::tquat< T >::value_type length (detail::tquat< T > const &q)
detail::tmat3x3< T > mat3_cast (detail::tquat< T > const &x)
template<typename T >
detail::tmat3x3< T > mat3_cast (detail::tquat< T > const &x)
detail::tmat4x4< T > mat4_cast (detail::tquat< T > const &x)
template<typename T >
detail::tmat4x4< T > mat4_cast (detail::tquat< T > const &x)
detail::tquat< T > mix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename T >
detail::tquat< T > mix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
detail::tquat< T > normalize (detail::tquat< T > const &q)
template<typename T >
detail::tquat< T > normalize (detail::tquat< T > const &q)
detail::tquat< T > quat_cast (detail::tmat3x3< T > const &x)
template<typename T >
detail::tquat< T > quat_cast (detail::tmat4x4< T > const &x)
detail::tquat< T > quat_cast (detail::tmat4x4< T > const &x)
template<typename T >
detail::tquat< T > quat_cast (detail::tmat3x3< T > const &x)
template<typename T >
detail::tquat< T > rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v)
detail::tquat< T > rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v)
-

Detailed Description

+

Detailed Description

Defines a templated quaternion type and several quaternion operations.

-

<glm/gtc/quaternion.hpp> need to be included to use these functionalities.

+

<glm/gtc/quaternion.hpp> need to be included to use these functionalities.


Typedef Documentation

- +
@@ -100,13 +98,13 @@ Functions

Quaternion of double-precision floating-point numbers.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Definition at line 222 of file gtc/quaternion.hpp.

+

Definition at line 253 of file gtc/quaternion.hpp.

- +
@@ -118,13 +116,13 @@ Functions

Quaternion of single-precision floating-point numbers.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Definition at line 218 of file gtc/quaternion.hpp.

+

Definition at line 248 of file gtc/quaternion.hpp.

- +
@@ -136,13 +134,13 @@ Functions

Quaternion of high precision floating-point numbers.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Definition at line 234 of file gtc/quaternion.hpp.

+

Definition at line 268 of file gtc/quaternion.hpp.

- +
@@ -154,13 +152,13 @@ Functions

Quaternion of half-precision floating-point numbers.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Definition at line 214 of file gtc/quaternion.hpp.

+

Definition at line 243 of file gtc/quaternion.hpp.

- +
@@ -172,13 +170,13 @@ Functions

Quaternion of low precision floating-point numbers.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Definition at line 226 of file gtc/quaternion.hpp.

+

Definition at line 258 of file gtc/quaternion.hpp.

- +
@@ -190,13 +188,13 @@ Functions

Quaternion of medium precision floating-point numbers.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Definition at line 230 of file gtc/quaternion.hpp.

+

Definition at line 263 of file gtc/quaternion.hpp.

- +
@@ -208,19 +206,19 @@ Functions

Quaternion of floating-point numbers.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Definition at line 210 of file gtc/quaternion.hpp.

+

Definition at line 238 of file gtc/quaternion.hpp.


Function Documentation

- +
- + @@ -231,46 +229,16 @@ Functions

Returns the q conjugate.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
- +
detail::tquat<T> glm::gtc::quaternion::conjugate detail::tquat<T> glm::conjugate ( detail::tquat< T > const &  q)
- - - - - - - - - - - - - - - - -
GLM_DEPRECATED detail::tquat<T> glm::gtc::quaternion::cross (detail::tquat< T > const & q1,
detail::tquat< T > const & q2 
)
-
-
- -

Returns the cross product of q1 and q2.

-

From GLM_GTC_quaternion extension.

- -
-
- -
-
- - - + @@ -291,16 +259,16 @@ Functions

Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
- +
detail::tquat<T>::value_type glm::gtc::quaternion::dot T glm::dot ( detail::tquat< T > const &  q1,
- + @@ -311,16 +279,16 @@ Functions

Returns the q inverse.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
- +
detail::tquat<T> glm::gtc::quaternion::inverse detail::tquat<T> glm::inverse ( detail::tquat< T > const &  q)
- + @@ -331,16 +299,16 @@ Functions

Returns the length of the quaternion.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
- +
detail::tquat<T>::value_type glm::gtc::quaternion::length T glm::length ( detail::tquat< T > const &  q)
- + @@ -351,18 +319,18 @@ Functions

Converts a quaternion to a 3 * 3 matrix.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Referenced by glm::gtx::quaternion::toMat3().

+

Referenced by glm::toMat3().

- +
detail::tmat3x3<T> glm::gtc::quaternion::mat3_cast detail::tmat3x3<T> glm::mat3_cast ( detail::tquat< T > const &  x)
- + @@ -373,18 +341,18 @@ Functions

Converts a quaternion to a 4 * 4 matrix.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Referenced by glm::gtx::quaternion::toMat4().

+

Referenced by glm::toMat4().

- +
detail::tmat4x4<T> glm::gtc::quaternion::mat4_cast detail::tmat4x4<T> glm::mat4_cast ( detail::tquat< T > const &  x)
- + @@ -411,16 +379,16 @@ Functions

Returns a SLERP interpolated quaternion of x and y according a.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
- +
detail::tquat<T> glm::gtc::quaternion::mix detail::tquat<T> glm::mix ( detail::tquat< T > const &  x,
- + @@ -431,36 +399,16 @@ Functions

Returns the normalized quaternion.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
- +
detail::tquat<T> glm::gtc::quaternion::normalize detail::tquat<T> glm::normalize ( detail::tquat< T > const &  q)
- - - - - - -
detail::tquat<T> glm::gtc::quaternion::quat_cast (detail::tmat4x4< T > const & x)
-
-
- -

Converts a 4 * 4 matrix to a quaternion.

-

From GLM_GTC_quaternion extension.

- -
-
- -
-
- - - + @@ -471,18 +419,38 @@ Functions

Converts a 3 * 3 matrix to a quaternion.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
-

Referenced by glm::gtx::quaternion::toQuat().

+

Referenced by glm::toQuat().

- +
detail::tquat<T> glm::gtc::quaternion::quat_cast detail::tquat<T> glm::quat_cast ( detail::tmat3x3< T > const &  x)
- + + + + + + +
detail::tquat<T> glm::gtc::quaternion::rotate detail::tquat<T> glm::quat_cast (detail::tmat4x4< T > const & x)
+
+
+ +

Converts a 4 * 4 matrix to a quaternion.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
+ +
+
+ +
+
+ + + @@ -509,13 +477,13 @@ Functions

Rotates a quaternion from an vector of 3 components axis and an angle expressed in degrees.

-

From GLM_GTC_quaternion extension.

+
See also:
- GLM_GTC_quaternion: Quaternion types and functions
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00165.html b/doc/api-0.9.3/a00165.html new file mode 100644 index 00000000..08615a89 --- /dev/null +++ b/doc/api-0.9.3/a00165.html @@ -0,0 +1,251 @@ + + + + +GLM_GTC_random: Random number generation + + + + + +
+
+
detail::tquat<T> glm::rotate ( detail::tquat< T > const &  q,
+ + + + + +
+
+ +
+
+ +
+

GLM_GTC_random: Random number generation

+
+
+ +

Generate random number from various distribution methods. +More...

+ + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
ballRand (T const &Radius)
template<typename T >
detail::tvec2< T > circularRand (T const &Radius)
template<typename T >
detail::tvec2< T > diskRand (T const &Radius)
template<typename genType >
genType gaussRand (genType const &Mean, genType const &Deviation)
template<typename genType >
genType linearRand (genType const &Min, genType const &Max)
template<typename T >
detail::tvec3< T > sphericalRand (T const &Radius)
+

Detailed Description

+

Generate random number from various distribution methods.

+

<glm/gtc/random.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::ballRand (T const & Radius)
+
+
+ +

Generate a random 3D vector which coordinates are regulary distributed within the volume of a ball of a given radius.

+
Parameters:
+ + +
Radius
+
+
+
See also:
GLM_GTC_random: Random number generation
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec2<T> glm::circularRand (T const & Radius)
+
+
+ +

Generate a random 2D vector which coordinates are regulary distributed on a circle of a given radius.

+
Parameters:
+ + +
Radius
+
+
+
See also:
GLM_GTC_random: Random number generation
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec2<T> glm::diskRand (T const & Radius)
+
+
+ +

Generate a random 2D vector which coordinates are regulary distributed within the area of a disk of a given radius.

+
Parameters:
+ + +
Radius
+
+
+
See also:
GLM_GTC_random: Random number generation
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType glm::gaussRand (genType const & Mean,
genType const & Deviation 
)
+
+
+ +

Generate random numbers in the interval [Min, Max], according a gaussian distribution.

+
Parameters:
+ + + +
Mean
Deviation
+
+
+
See also:
GLM_GTC_random: Random number generation
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType glm::linearRand (genType const & Min,
genType const & Max 
)
+
+
+ +

Generate random numbers in the interval [Min, Max], according a linear distribution.

+
Parameters:
+ + + +
Min
Max
+
+
+
Template Parameters:
+ + +
genTypeValue type. Currently supported: half (not recommanded), float or double scalars and vectors.
+
+
+
See also:
GLM_GTC_random: Random number generation
+ +
+
+ +
+
+ + + + + + + + +
detail::tvec3<T> glm::sphericalRand (T const & Radius)
+
+
+ +

Generate a random 3D vector which coordinates are regulary distributed on a sphere of a given radius.

+
Parameters:
+ + +
Radius
+
+
+
See also:
GLM_GTC_random: Random number generation
+ +
+
+
+ + + diff --git a/doc/api-0.9.3/a00166.html b/doc/api-0.9.3/a00166.html new file mode 100644 index 00000000..b2cfad8d --- /dev/null +++ b/doc/api-0.9.3/a00166.html @@ -0,0 +1,49 @@ + + + + +GLM_GTC_swizzle: Swizzle 'operator' implementation + + + + + +
+
+ + + + + + +
+
+ +
+
+
+

GLM_GTC_swizzle: Swizzle 'operator' implementation

+
+
+ +

Provide functions to emulate GLSL swizzle operator fonctionalities. +More...

+ +
+

Detailed Description

+

Provide functions to emulate GLSL swizzle operator fonctionalities.

+

<glm/gtc/swizzle.hpp> need to be included to use these functionalities.

+
+ + + diff --git a/doc/api-0.9.2/a00246.html b/doc/api-0.9.3/a00167.html similarity index 69% rename from doc/api-0.9.2/a00246.html rename to doc/api-0.9.3/a00167.html index d9c750c6..a7b59211 100644 --- a/doc/api-0.9.2/a00246.html +++ b/doc/api-0.9.3/a00167.html @@ -2,18 +2,18 @@ -GLM_GTC_type_precision: Vector and matrix types with defined precisions. +GLM_GTC_type_precision: Vector and matrix types with defined precisions - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTC_type_precision: Vector and matrix types with defined precisions

+

Defines specific C++-based precision types. -More...

+More...

+typedef float16  +typedef detail::tmat2x2< f16 >  +typedef detail::tmat2x2< f16 >  +typedef detail::tmat2x3< f16 >  +typedef detail::tmat2x4< f16 >  +typedef detail::tmat3x3< f16 >  +typedef detail::tmat3x2< f16 >  +typedef detail::tmat3x3< f16 >  +typedef detail::tmat3x4< f16 >  +typedef detail::tmat4x4< f16 >  +typedef detail::tmat4x2< f16 >  +typedef detail::tmat4x3< f16 >  +typedef detail::tmat4x4< f16 >  +typedef detail::tquat< f16 >  + +typedef detail::tvec2< f16 >  +typedef detail::tvec3< f16 >  +typedef detail::tvec4< f16 >  +typedef float32  +typedef detail::tmat2x2< f32 >  +typedef detail::tmat2x2< f32 >  +typedef detail::tmat2x3< f32 >  +typedef detail::tmat2x4< f32 >  +typedef detail::tmat3x3< f32 >  +typedef detail::tmat3x2< f32 >  +typedef detail::tmat3x3< f32 >  +typedef detail::tmat3x4< f32 >  +typedef detail::tmat4x4< f32 >  +typedef detail::tmat4x2< f32 >  +typedef detail::tmat4x3< f32 >  +typedef detail::tmat4x4< f32 >  +typedef detail::tquat< f32 >  + +typedef detail::tvec2< f32 >  +typedef detail::tvec3< f32 >  +typedef detail::tvec4< f32 >  +typedef float64  +typedef detail::tmat2x2< f64 >  +typedef detail::tmat2x2< f64 >  +typedef detail::tmat2x3< f64 >  +typedef detail::tmat2x4< f64 >  +typedef detail::tmat3x3< f64 >  +typedef detail::tmat3x2< f64 >  +typedef detail::tmat3x3< f64 >  +typedef detail::tmat3x4< f64 >  +typedef detail::tmat4x4< f64 >  +typedef detail::tmat4x2< f64 >  +typedef detail::tmat4x3< f64 >  +typedef detail::tmat4x4< f64 >  +typedef detail::tquat< f64 >  + +typedef detail::tvec2< f64 >  +typedef detail::tvec3< f64 >  +typedef detail::tvec4< f64 >  +typedef detail::thalf  + +typedef float  + +typedef double  + +typedef detail::tmat2x2< f32 >  +typedef detail::tmat2x2< f32 >  +typedef detail::tmat2x3< f32 >  +typedef detail::tmat2x4< f32 >  +typedef detail::tmat3x3< f32 >  +typedef detail::tmat3x2< f32 >  +typedef detail::tmat3x3< f32 >  +typedef detail::tmat3x4< f32 >  +typedef detail::tmat4x4< f32 >  +typedef detail::tmat4x2< f32 >  +typedef detail::tmat4x3< f32 >  +typedef detail::tmat4x4< f32 >  +typedef detail::tvec2< float >  +typedef detail::tvec3< float >  +typedef detail::tvec4< float >  +typedef int16  + +typedef detail::tvec2< i16 >  +typedef detail::tvec3< i16 >  +typedef detail::tvec4< i16 >  +typedef int32  + +typedef detail::tvec2< i32 >  +typedef detail::tvec3< i32 >  +typedef detail::tvec4< i32 >  +typedef int64  + +typedef detail::tvec2< i64 >  +typedef detail::tvec3< i64 >  +typedef detail::tvec4< i64 >  +typedef int8  + +typedef detail::tvec2< i8 >  +typedef detail::tvec3< i8 >  +typedef detail::tvec4< i8 >  +typedef signed short  + +typedef signed int  + +typedef detail::sint64  + +typedef signed char  + +typedef uint16  + +typedef detail::tvec2< u16 >  +typedef detail::tvec3< u16 >  +typedef detail::tvec4< u16 >  +typedef uint32  + +typedef detail::tvec2< u32 >  +typedef detail::tvec3< u32 >  +typedef detail::tvec4< u32 >  +typedef uint64  + +typedef detail::tvec2< u64 >  +typedef detail::tvec3< u64 >  +typedef detail::tvec4< u64 >  +typedef uint8  + +typedef detail::tvec2< u8 >  +typedef detail::tvec3< u8 >  +typedef detail::tvec4< u8 >  +typedef unsigned short  + +typedef unsigned int  + +typedef unsigned long long  + +typedef unsigned char  +

Typedefs

-typedef float16 f16
f16
-typedef detail::tmat2x2< f16 > f16mat2
f16mat2
-typedef detail::tmat2x2< f16 > f16mat2x2
f16mat2x2
-typedef detail::tmat2x3< f16 > f16mat2x3
f16mat2x3
-typedef detail::tmat2x4< f16 > f16mat2x4
f16mat2x4
-typedef detail::tmat3x3< f16 > f16mat3
f16mat3
-typedef detail::tmat3x2< f16 > f16mat3x2
f16mat3x2
-typedef detail::tmat3x3< f16 > f16mat3x3
f16mat3x3
-typedef detail::tmat3x4< f16 > f16mat3x4
f16mat3x4
-typedef detail::tmat4x4< f16 > f16mat4
f16mat4
-typedef detail::tmat4x2< f16 > f16mat4x2
f16mat4x2
-typedef detail::tmat4x3< f16 > f16mat4x3
f16mat4x3
-typedef detail::tmat4x4< f16 > f16mat4x4
f16mat4x4
-typedef detail::tquat< f16 > f16quat
f16quat
+typedef detail::tvec1< f16 > f16vec1
-typedef detail::tvec2< f16 > f16vec2
f16vec2
-typedef detail::tvec3< f16 > f16vec3
f16vec3
-typedef detail::tvec4< f16 > f16vec4
f16vec4
-typedef float32 f32
f32
-typedef detail::tmat2x2< f32 > f32mat2
f32mat2
-typedef detail::tmat2x2< f32 > f32mat2x2
f32mat2x2
-typedef detail::tmat2x3< f32 > f32mat2x3
f32mat2x3
-typedef detail::tmat2x4< f32 > f32mat2x4
f32mat2x4
-typedef detail::tmat3x3< f32 > f32mat3
f32mat3
-typedef detail::tmat3x2< f32 > f32mat3x2
f32mat3x2
-typedef detail::tmat3x3< f32 > f32mat3x3
f32mat3x3
-typedef detail::tmat3x4< f32 > f32mat3x4
f32mat3x4
-typedef detail::tmat4x4< f32 > f32mat4
f32mat4
-typedef detail::tmat4x2< f32 > f32mat4x2
f32mat4x2
-typedef detail::tmat4x3< f32 > f32mat4x3
f32mat4x3
-typedef detail::tmat4x4< f32 > f32mat4x4
f32mat4x4
-typedef detail::tquat< f32 > f32quat
f32quat
+typedef detail::tvec1< f32 > f32vec1
-typedef detail::tvec2< f32 > f32vec2
f32vec2
-typedef detail::tvec3< f32 > f32vec3
f32vec3
-typedef detail::tvec4< f32 > f32vec4
f32vec4
-typedef float64 f64
f64
-typedef detail::tmat2x2< f64 > f64mat2
f64mat2
-typedef detail::tmat2x2< f64 > f64mat2x2
f64mat2x2
-typedef detail::tmat2x3< f64 > f64mat2x3
f64mat2x3
-typedef detail::tmat2x4< f64 > f64mat2x4
f64mat2x4
-typedef detail::tmat3x3< f64 > f64mat3
f64mat3
-typedef detail::tmat3x2< f64 > f64mat3x2
f64mat3x2
-typedef detail::tmat3x3< f64 > f64mat3x3
f64mat3x3
-typedef detail::tmat3x4< f64 > f64mat3x4
f64mat3x4
-typedef detail::tmat4x4< f64 > f64mat4
f64mat4
-typedef detail::tmat4x2< f64 > f64mat4x2
f64mat4x2
-typedef detail::tmat4x3< f64 > f64mat4x3
f64mat4x3
-typedef detail::tmat4x4< f64 > f64mat4x4
f64mat4x4
-typedef detail::tquat< f64 > f64quat
f64quat
+typedef detail::tvec1< f64 > f64vec1
-typedef detail::tvec2< f64 > f64vec2
f64vec2
-typedef detail::tvec3< f64 > f64vec3
f64vec3
-typedef detail::tvec4< f64 > f64vec4
f64vec4
-typedef detail::float16 float16
float16
+typedef detail::float16 float16_t
-typedef detail::float32 float32
float32
+typedef detail::float32 float32_t
-typedef detail::float64 float64
float64
+typedef detail::float64 float64_t
-typedef detail::tmat2x2< f32 > fmat2
fmat2
-typedef detail::tmat2x2< f32 > fmat2x2
fmat2x2
-typedef detail::tmat2x3< f32 > fmat2x3
fmat2x3
-typedef detail::tmat2x4< f32 > fmat2x4
fmat2x4
-typedef detail::tmat3x3< f32 > fmat3
fmat3
-typedef detail::tmat3x2< f32 > fmat3x2
fmat3x2
-typedef detail::tmat3x3< f32 > fmat3x3
fmat3x3
-typedef detail::tmat3x4< f32 > fmat3x4
fmat3x4
-typedef detail::tmat4x4< f32 > fmat4
fmat4
-typedef detail::tmat4x2< f32 > fmat4x2
fmat4x2
-typedef detail::tmat4x3< f32 > fmat4x3
fmat4x3
-typedef detail::tmat4x4< f32 > fmat4x4
fmat4x4
-typedef detail::tvec2< float > fvec2
fvec2
-typedef detail::tvec3< float > fvec3
fvec3
-typedef detail::tvec4< float > fvec4
fvec4
-typedef int16 i16
i16
+typedef detail::tvec1< i16 > i16vec1
-typedef detail::tvec2< i16 > i16vec2
i16vec2
-typedef detail::tvec3< i16 > i16vec3
i16vec3
-typedef detail::tvec4< i16 > i16vec4
i16vec4
-typedef int32 i32
i32
+typedef detail::tvec1< i32 > i32vec1
-typedef detail::tvec2< i32 > i32vec2
i32vec2
-typedef detail::tvec3< i32 > i32vec3
i32vec3
-typedef detail::tvec4< i32 > i32vec4
i32vec4
-typedef int64 i64
i64
+typedef detail::tvec1< i64 > i64vec1
-typedef detail::tvec2< i64 > i64vec2
i64vec2
-typedef detail::tvec3< i64 > i64vec3
i64vec3
-typedef detail::tvec4< i64 > i64vec4
i64vec4
-typedef int8 i8
i8
+typedef detail::tvec1< i8 > i8vec1
-typedef detail::tvec2< i8 > i8vec2
i8vec2
-typedef detail::tvec3< i8 > i8vec3
i8vec3
-typedef detail::tvec4< i8 > i8vec4
i8vec4
-typedef detail::int16 int16
int16
+typedef detail::int16 int16_t
-typedef detail::int32 int32
int32
+typedef detail::int32 int32_t
-typedef detail::int64 int64
int64
+typedef detail::int64 int64_t
-typedef detail::int8 int8
int8
+typedef detail::int8 int8_t
-typedef uint16 u16
u16
+typedef detail::tvec1< u16 > u16vec1
-typedef detail::tvec2< u16 > u16vec2
u16vec2
-typedef detail::tvec3< u16 > u16vec3
u16vec3
-typedef detail::tvec4< u16 > u16vec4
u16vec4
-typedef uint32 u32
u32
+typedef detail::tvec1< u32 > u32vec1
-typedef detail::tvec2< u32 > u32vec2
u32vec2
-typedef detail::tvec3< u32 > u32vec3
u32vec3
-typedef detail::tvec4< u32 > u32vec4
u32vec4
-typedef uint64 u64
u64
+typedef detail::tvec1< u64 > u64vec1
-typedef detail::tvec2< u64 > u64vec2
u64vec2
-typedef detail::tvec3< u64 > u64vec3
u64vec3
-typedef detail::tvec4< u64 > u64vec4
u64vec4
-typedef uint8 u8
u8
+typedef detail::tvec1< u8 > u8vec1
-typedef detail::tvec2< u8 > u8vec2
u8vec2
-typedef detail::tvec3< u8 > u8vec3
u8vec3
-typedef detail::tvec4< u8 > u8vec4
u8vec4
-typedef detail::uint16 uint16
uint16
+typedef detail::uint16 uint16_t
-typedef detail::uint32 uint32
uint32
+typedef detail::uint32 uint32_t
-typedef detail::uint64 uint64
uint64
+typedef detail::uint64 uint64_t
-typedef detail::uint8 uint8
uint8
+typedef detail::uint8 uint8_t
-

Detailed Description

+

Detailed Description

Defines specific C++-based precision types.

-

Precision types defines types based on GLSL's precision qualifiers. This extension defines types based on explicitly-sized C++ data types.

-

<glm/gtc/type_precision.hpp> need to be included to use these functionalities.

+

Precision types defines types based on GLSL's precision qualifiers. This extension defines types based on explicitly-sized C++ data types.

+

<glm/gtc/type_precision.hpp> need to be included to use these functionalities.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00168.html b/doc/api-0.9.3/a00168.html new file mode 100644 index 00000000..7c28374d --- /dev/null +++ b/doc/api-0.9.3/a00168.html @@ -0,0 +1,1105 @@ + + + + +GLM_GTC_type_ptr: Memory layout access + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

GLM_GTC_type_ptr: Memory layout access

+
+
+ +

Handles the interaction between pointers and vector, matrix types. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x2< T > 
make_mat2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x2< T > 
make_mat2x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x3< T > 
make_mat2x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat2x4< T > 
make_mat2x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x3< T > 
make_mat3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x2< T > 
make_mat3x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x3< T > 
make_mat3x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat3x4< T > 
make_mat3x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x4< T > 
make_mat4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x2< T > 
make_mat4x2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x3< T > 
make_mat4x3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tmat4x4< T > 
make_mat4x4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tquat< T > 
make_quat (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec2< T > 
make_vec2 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec3< T > 
make_vec3 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER
+detail::tvec4< T > 
make_vec4 (T const *const ptr)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tquat< T > const &q)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec4< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x3< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec3< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat2x2< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec3< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat4x4< T > const &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec2< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x4< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat2x3< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tvec2< T > const &vec)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat4x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tmat3x2< T > &mat)
template<typename T >
GLM_FUNC_QUALIFIER T * value_ptr (detail::tvec4< T > &vec)
template<typename T >
GLM_FUNC_QUALIFIER T const * value_ptr (detail::tmat3x2< T > const &mat)
+

Detailed Description

+

Handles the interaction between pointers and vector, matrix types.

+

This extension defines an overloaded function, glm::value_ptr, which takes any of the core template types. It returns a pointer to the memory layout of the object. Matrix types store their values in column-major order.

+

This is useful for uploading data to matrices or copying data to buffer objects.

+

Example:

+
 #include <glm/glm.hpp>
+ #include <glm/gtc/type_ptr.hpp>
+ 
+ glm::vec3 aVector(3);
+ glm::mat4 someMatrix(1.0);
+ 
+ glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector));
+ glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix));
+

<glm/gtc/type_ptr.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::make_mat2 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 472 of file type_ptr.hpp.

+ +

References glm::make_mat2x2().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::make_mat2x2 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 382 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +

Referenced by glm::make_mat2().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat2x3<T> glm::make_mat2x3 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 392 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat2x4<T> glm::make_mat2x4 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 402 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::make_mat3 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 480 of file type_ptr.hpp.

+ +

References glm::make_mat3x3().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat3x2<T> glm::make_mat3x2 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 412 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::make_mat3x3 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 422 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +

Referenced by glm::make_mat3().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat3x4<T> glm::make_mat3x4 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 432 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::make_mat4 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 488 of file type_ptr.hpp.

+ +

References glm::make_mat4x4().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat4x2<T> glm::make_mat4x2 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 442 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat4x3<T> glm::make_mat4x3 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 452 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::make_mat4x4 (T const *const ptr)
+
+
+ +

Build a matrix from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 462 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +

Referenced by glm::make_mat4().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tquat<T> glm::make_quat (T const *const ptr)
+
+
+ +

Build a quaternion from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 496 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tvec2<T> glm::make_vec2 (T const *const ptr)
+
+
+ +

Build a vector from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 352 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tvec3<T> glm::make_vec3 (T const *const ptr)
+
+
+ +

Build a vector from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 362 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER detail::tvec4<T> glm::make_vec4 (T const *const ptr)
+
+
+ +

Build a vector from a pointer.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 372 of file type_ptr.hpp.

+ +

References glm::value_ptr().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat2x3< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 213 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat4x3< T > & mat)
+
+
+ +

Get the address of the matrix content.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 344 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tquat< T > const & q)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 334 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat4x3< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 323 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat3x4< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 312 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat3x4< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 301 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tvec4< T > const & vec)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 125 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat4x2< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 279 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat2x4< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 257 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat3x3< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 169 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tvec3< T > & vec)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 114 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat3x3< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 180 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat2x2< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 147 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tvec3< T > const & vec)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 103 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat4x4< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 202 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat4x4< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 191 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tvec2< T > & vec)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 92 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat2x2< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 158 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat2x4< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 268 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat2x3< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 224 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tvec2< T > const & vec)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 81 of file type_ptr.hpp.

+ +

Referenced by glm::make_mat2x2(), glm::make_mat2x3(), glm::make_mat2x4(), glm::make_mat3x2(), glm::make_mat3x3(), glm::make_mat3x4(), glm::make_mat4x2(), glm::make_mat4x3(), glm::make_mat4x4(), glm::make_quat(), glm::make_vec2(), glm::make_vec3(), and glm::make_vec4().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat4x2< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 290 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tmat3x2< T > & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 246 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T* glm::value_ptr (detail::tvec4< T > & vec)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 136 of file type_ptr.hpp.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER T const* glm::value_ptr (detail::tmat3x2< T > const & mat)
+
+
+ +

Return the constant address to the data of the input parameter.

+

From GLM_GTC_type_ptr extension.

+ +

Definition at line 235 of file type_ptr.hpp.

+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00249.html b/doc/api-0.9.3/a00169.html similarity index 66% rename from doc/api-0.9.2/a00249.html rename to doc/api-0.9.3/a00169.html index 4a89cd73..a060b92b 100644 --- a/doc/api-0.9.2/a00249.html +++ b/doc/api-0.9.3/a00169.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_associated_min_max: Associated Min/Max

+
-

Min and max functions that return associated values not the compared onces. <glm/gtx/associated_min_max.hpp> need to be included to use these functionalities. -More...

+

Min and max functions that return associated values not the compared onces. +More...

- - - + - - + - - + - - + - - + - +

Functions

+
template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
+
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
+
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
template<typename genTypeT , typename genTypeU >
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
+
genTypeU associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
+
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c)
template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
+
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b)
template<typename genTypeT , typename genTypeU >
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
genTypeU associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d)
-

Detailed Description

-

Min and max functions that return associated values not the compared onces. <glm/gtx/associated_min_max.hpp> need to be included to use these functionalities.

+

Detailed Description

+

Min and max functions that return associated values not the compared onces.

+

<glm/gtx/associated_min_max.hpp> need to be included to use these functionalities.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00250.html b/doc/api-0.9.3/a00170.html similarity index 59% rename from doc/api-0.9.2/a00250.html rename to doc/api-0.9.3/a00170.html index a573c62d..46088fb0 100644 --- a/doc/api-0.9.2/a00250.html +++ b/doc/api-0.9.3/a00170.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_bit: Extended bitwise operations

+

Allow to perform bit operations on integer values. -More...

+More...

- + - + - + - + + + + + - + - + - + - + - + - + - + - +

Functions

template<typename genType >
genType bitRevert (genType const &value)
genType bitRevert (genType const &value)
template<typename genType >
genType bitRotateLeft (genType const &In, std::size_t Shift)
genType bitRotateLeft (genType const &In, std::size_t Shift)
template<typename genType >
genType bitRotateRight (genType const &In, std::size_t Shift)
genType bitRotateRight (genType const &In, std::size_t Shift)
template<typename genIUType , typename sizeType >
genIUType extractField (genIUType const &v, sizeType const &first, sizeType const &count)
genIUType extractField (genIUType const &v, sizeType const &first, sizeType const &count)
template<typename genIUType >
genIUType fillBitfieldWithOne (genIUType const &Value, int const &FromBit, int const &ToBit)
template<typename genIUType >
genIUType fillBitfieldWithZero (genIUType const &Value, int const &FromBit, int const &ToBit)
template<typename genType >
int highestBit (genType const &value)
int highestBit (genType const &value)
template<typename genType >
genType highestBitValue (genType const &value)
genType highestBitValue (genType const &value)
template<typename genType >
bool isPowerOfTwo (genType const &value)
bool isPowerOfTwo (genType const &value)
template<typename genType >
int lowestBit (genType const &value)
int lowestBit (genType const &value)
template<typename genIType >
genIType mask (genIType const &count)
genIType mask (genIType const &count)
template<typename genType >
genType powerOfTwoAbove (genType const &value)
genType powerOfTwoAbove (genType const &value)
template<typename genType >
genType powerOfTwoBelow (genType const &value)
genType powerOfTwoBelow (genType const &value)
template<typename genType >
genType powerOfTwoNearest (genType const &value)
genType powerOfTwoNearest (genType const &value)
-

Detailed Description

+

Detailed Description

Allow to perform bit operations on integer values.

-

<glm/gtx/bit.hpp> need to be included to use these functionalities.

+

<glm/gtx/bit.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -90,12 +94,12 @@ Functions - +
genType glm::gtx::bit::bitRevert genType glm::bitRevert ( genType const &  value)
- + @@ -120,12 +124,12 @@ Functions - +
genType glm::gtx::bit::bitRotateLeft genType glm::bitRotateLeft ( genType const &  In,
- + @@ -150,12 +154,12 @@ Functions - +
genType glm::gtx::bit::bitRotateRight genType glm::bitRotateRight ( genType const &  In,
- + @@ -186,12 +190,84 @@ Functions - +
genIUType glm::gtx::bit::extractField genIUType glm::extractField ( genIUType const &  v,
- + + + + + + + + + + + + + + + + + + + + + + +
int glm::gtx::bit::highestBit genIUType glm::fillBitfieldWithOne (genIUType const & Value,
int const & FromBit,
int const & ToBit 
)
+
+
+ +

Set to 1 a range of bits.

+

From GLM_GTX_bit extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
genIUType glm::fillBitfieldWithZero (genIUType const & Value,
int const & FromBit,
int const & ToBit 
)
+
+
+ +

Set to 0 a range of bits.

+

From GLM_GTX_bit extension.

+ +
+
+ +
+
+ + + @@ -206,12 +282,12 @@ Functions - +
int glm::highestBit ( genType const &  value)
- + @@ -226,12 +302,12 @@ Functions - +
genType glm::gtx::bit::highestBitValue genType glm::highestBitValue ( genType const &  value)
- + @@ -246,12 +322,12 @@ Functions - +
bool glm::gtx::bit::isPowerOfTwo bool glm::isPowerOfTwo ( genType const &  value)
- + @@ -266,12 +342,12 @@ Functions - +
int glm::gtx::bit::lowestBit int glm::lowestBit ( genType const &  value)
- + @@ -285,12 +361,12 @@ Functions - +
genIType glm::gtx::bit::mask genIType glm::mask ( genIType const &  count)
- + @@ -305,12 +381,12 @@ Functions - +
genType glm::gtx::bit::powerOfTwoAbove genType glm::powerOfTwoAbove ( genType const &  value)
- + @@ -325,12 +401,12 @@ Functions - +
genType glm::gtx::bit::powerOfTwoBelow genType glm::powerOfTwoBelow ( genType const &  value)
- + @@ -348,6 +424,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00251.html b/doc/api-0.9.3/a00171.html similarity index 72% rename from doc/api-0.9.2/a00251.html rename to doc/api-0.9.3/a00171.html index 246f427d..dce30769 100644 --- a/doc/api-0.9.2/a00251.html +++ b/doc/api-0.9.3/a00171.html @@ -7,13 +7,13 @@ - +
genType glm::gtx::bit::powerOfTwoNearest genType glm::powerOfTwoNearest ( genType const &  value)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_closest_point: Find closest point

+

Find the point on a straight line which is the closet of a point. -More...

+More...

- +

Functions

template<typename T >
detail::tvec3< T > closestPointOnLine (detail::tvec3< T > const &point, detail::tvec3< T > const &a, detail::tvec3< T > const &b)
detail::tvec3< T > closestPointOnLine (detail::tvec3< T > const &point, detail::tvec3< T > const &a, detail::tvec3< T > const &b)
-

Detailed Description

+

Detailed Description

Find the point on a straight line which is the closet of a point.

-

<glm/gtx/closest_point.hpp> need to be included to use these functionalities.

+

<glm/gtx/closest_point.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -87,6 +87,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00172.html b/doc/api-0.9.3/a00172.html new file mode 100644 index 00000000..a61c718e --- /dev/null +++ b/doc/api-0.9.3/a00172.html @@ -0,0 +1,227 @@ + + + + +GLM_GTX_color_cast: Color conversion + + + + + +
+
+
detail::tvec3<T> glm::gtx::closest_point::closestPointOnLine detail::tvec3<T> glm::closestPointOnLine ( detail::tvec3< T > const &  point,
+ + + + + +
+
+ +
+
+ +
+

GLM_GTX_color_cast: Color conversion

+
+
+ +

Conversion between two color types. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T >
f16vec4 f16_abgr_cast (T c)
+template<typename T >
f16vec4 f16_argb_cast (T c)
+template<typename T >
f16vec4 f16_bgra_cast (T c)
+template<typename T >
f16vec3 f16_bgrx_cast (T c)
+template<typename T >
f16 f16_channel_cast (T a)
+template<typename T >
f16vec4 f16_rgba_cast (T c)
+template<typename T >
f16vec3 f16_rgbx_cast (T c)
+template<typename T >
f16vec3 f16_xbgr_cast (T c)
+template<typename T >
f16vec3 f16_xrgb_cast (T c)
+template<typename T >
f32vec4 f32_abgr_cast (T c)
+template<typename T >
f32vec4 f32_argb_cast (T c)
+template<typename T >
f32vec4 f32_bgra_cast (T c)
+template<typename T >
f32vec3 f32_bgrx_cast (T c)
+template<typename T >
f32 f32_channel_cast (T a)
+template<typename T >
f32vec4 f32_rgba_cast (T c)
+template<typename T >
f32vec3 f32_rgbx_cast (T c)
+template<typename T >
f32vec3 f32_xbgr_cast (T c)
+template<typename T >
f32vec3 f32_xrgb_cast (T c)
+template<typename T >
f64vec4 f64_abgr_cast (T c)
+template<typename T >
f64vec4 f64_argb_cast (T c)
+template<typename T >
f64vec4 f64_bgra_cast (T c)
+template<typename T >
f64vec3 f64_bgrx_cast (T c)
+template<typename T >
f64 f64_channel_cast (T a)
+template<typename T >
f64vec4 f64_rgba_cast (T c)
+template<typename T >
f64vec3 f64_rgbx_cast (T c)
+template<typename T >
f64vec3 f64_xbgr_cast (T c)
+template<typename T >
f64vec3 f64_xrgb_cast (T c)
template<typename valType >
uint16 u16channel_cast (valType a)
+template<typename T >
uint32 u32_abgr_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_argb_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_bgra_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_bgrx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint32 u32_rgba_cast (const detail::tvec4< T > &c)
+template<typename T >
uint32 u32_rgbx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint32 u32_xbgr_cast (const detail::tvec3< T > &c)
+template<typename T >
uint32 u32_xrgb_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_abgr_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_argb_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_bgra_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_bgrx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_rgba_cast (const detail::tvec4< T > &c)
+template<typename T >
uint64 u64_rgbx_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_xbgr_cast (const detail::tvec3< T > &c)
+template<typename T >
uint64 u64_xrgb_cast (const detail::tvec3< T > &c)
template<typename valType >
uint8 u8channel_cast (valType a)
+

Detailed Description

+

Conversion between two color types.

+

<glm/gtx/color_cast.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
uint16 glm::u16channel_cast (valType a)
+
+
+ +

Conversion of a floating value into a 16bit unsigned int value.

+

From GLM_GTX_color_cast extension.

+ +
+
+ +
+
+ + + + + + + + +
uint8 glm::u8channel_cast (valType a)
+
+
+ +

Conversion of a floating value into a 8bit unsigned int value.

+

From GLM_GTX_color_cast extension.

+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00253.html b/doc/api-0.9.3/a00173.html similarity index 69% rename from doc/api-0.9.2/a00253.html rename to doc/api-0.9.3/a00173.html index c78b8a4f..b28ff65f 100644 --- a/doc/api-0.9.2/a00253.html +++ b/doc/api-0.9.3/a00173.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_color_space: RGB to HSV conversion

+

Related to RGB to HSV conversions and operations. -More...

+More...

- + - + - + - + - + - +

Functions

template<typename valType >
detail::tvec3< valType > hsvColor (detail::tvec3< valType > const &rgbValue)
detail::tvec3< valType > hsvColor (detail::tvec3< valType > const &rgbValue)
template<typename valType >
valType luminosity (detail::tvec3< valType > const &color)
valType luminosity (detail::tvec3< valType > const &color)
template<typename valType >
detail::tvec3< valType > rgbColor (detail::tvec3< valType > const &hsvValue)
detail::tvec3< valType > rgbColor (detail::tvec3< valType > const &hsvValue)
template<typename valType >
detail::tvec3< valType > saturation (valType const s, detail::tvec3< valType > const &color)
detail::tvec3< valType > saturation (valType const s, detail::tvec3< valType > const &color)
template<typename valType >
detail::tmat4x4< valType > saturation (valType const s)
detail::tmat4x4< valType > saturation (valType const s)
template<typename valType >
detail::tvec4< valType > saturation (valType const s, detail::tvec4< valType > const &color)
detail::tvec4< valType > saturation (valType const s, detail::tvec4< valType > const &color)
-

Detailed Description

+

Detailed Description

Related to RGB to HSV conversions and operations.

-

<glm/gtx/color_space.hpp> need to be included to use these functionalities.

+

<glm/gtx/color_space.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -78,12 +78,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::color_space::hsvColor detail::tvec3<valType> glm::hsvColor ( detail::tvec3< valType > const &  rgbValue)
- + @@ -98,12 +98,12 @@ Functions - +
valType glm::gtx::color_space::luminosity valType glm::luminosity ( detail::tvec3< valType > const &  color)
- + @@ -118,12 +118,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::color_space::rgbColor detail::tvec3<valType> glm::rgbColor ( detail::tvec3< valType > const &  hsvValue)
- + @@ -148,12 +148,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::color_space::saturation detail::tvec3<valType> glm::saturation ( valType const  s,
- + @@ -168,12 +168,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::color_space::saturation detail::tmat4x4<valType> glm::saturation ( valType const  s)
- + @@ -201,6 +201,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00254.html b/doc/api-0.9.3/a00174.html similarity index 68% rename from doc/api-0.9.2/a00254.html rename to doc/api-0.9.3/a00174.html index 941a584a..d392cafd 100644 --- a/doc/api-0.9.2/a00254.html +++ b/doc/api-0.9.3/a00174.html @@ -7,13 +7,13 @@ - +
detail::tvec4<valType> glm::gtx::color_space::saturation detail::tvec4<valType> glm::saturation ( valType const  s,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_color_space_YCoCg: RGB to YCoCg conversion

+

RGB to YCoCg conversions and operations. -More...

+More...

- + - + - + - +

Functions

template<typename valType >
detail::tvec3< valType > rgb2YCoCg (detail::tvec3< valType > const &rgbColor)
detail::tvec3< valType > rgb2YCoCg (detail::tvec3< valType > const &rgbColor)
template<typename valType >
detail::tvec3< valType > rgb2YCoCgR (detail::tvec3< valType > const &rgbColor)
detail::tvec3< valType > rgb2YCoCgR (detail::tvec3< valType > const &rgbColor)
template<typename valType >
detail::tvec3< valType > YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor)
detail::tvec3< valType > YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor)
template<typename valType >
detail::tvec3< valType > YCoCgR2rgb (detail::tvec3< valType > const &YCoCgColor)
detail::tvec3< valType > YCoCgR2rgb (detail::tvec3< valType > const &YCoCgColor)
-

Detailed Description

+

Detailed Description

RGB to YCoCg conversions and operations.

-

<glm/gtx/color_space_YCoCg.hpp> need to be included to use these functionalities.

+

<glm/gtx/color_space_YCoCg.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -74,12 +74,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::color_space_YCoCg::rgb2YCoCg detail::tvec3<valType> glm::rgb2YCoCg ( detail::tvec3< valType > const &  rgbColor)
- + @@ -94,12 +94,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::color_space_YCoCg::rgb2YCoCgR detail::tvec3<valType> glm::rgb2YCoCgR ( detail::tvec3< valType > const &  rgbColor)
- + @@ -114,12 +114,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::color_space_YCoCg::YCoCg2rgb detail::tvec3<valType> glm::YCoCg2rgb ( detail::tvec3< valType > const &  YCoCgColor)
- + @@ -137,6 +137,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00255.html b/doc/api-0.9.3/a00175.html similarity index 61% rename from doc/api-0.9.2/a00255.html rename to doc/api-0.9.3/a00175.html index c26bd167..80b78d41 100644 --- a/doc/api-0.9.2/a00255.html +++ b/doc/api-0.9.3/a00175.html @@ -7,13 +7,13 @@ - +
detail::tvec3<valType> glm::gtx::color_space_YCoCg::YCoCgR2rgb detail::tvec3<valType> glm::YCoCgR2rgb ( detail::tvec3< valType > const &  YCoCgColor)
- +
@@ -21,8 +21,8 @@
-
GLM_GTX_compatibility: Cg and HLSL compatibility
-
+

GLM_GTX_compatibility: Cg and HLSL compatibility

+

Provide functions to increase the compatibility with Cg and HLSL languages. -More...

+More...

+typedef bool  +typedef bool  +typedef detail::tvec2< bool >  +typedef detail::tmat2x2< bool >  +typedef detail::tmat2x3< bool >  +typedef detail::tmat2x4< bool >  +typedef detail::tvec3< bool >  +typedef detail::tmat3x2< bool >  +typedef detail::tmat3x3< bool >  +typedef detail::tmat3x4< bool >  +typedef detail::tvec4< bool >  +typedef detail::tmat4x2< bool >  +typedef detail::tmat4x3< bool >  +typedef detail::tmat4x4< bool >  +typedef double  +typedef double  +typedef detail::tvec2< double >  +typedef detail::tmat2x2< double >  +typedef detail::tmat2x3< double >  +typedef detail::tmat2x4< double >  +typedef detail::tvec3< double >  +typedef detail::tmat3x2< double >  +typedef detail::tmat3x3< double >  +typedef detail::tmat3x4< double >  +typedef detail::tvec4< double >  +typedef detail::tmat4x2< double >  +typedef detail::tmat4x3< double >  +typedef detail::tmat4x4< double >  +typedef float  +typedef float  +typedef detail::tvec2< float >  +typedef detail::tmat2x2< float >  +typedef detail::tmat2x3< float >  +typedef detail::tmat2x4< float >  +typedef detail::tvec3< float >  +typedef detail::tmat3x2< float >  +typedef detail::tmat3x3< float >  +typedef detail::tmat3x4< float >  +typedef detail::tvec4< float >  +typedef detail::tmat4x2< float >  +typedef detail::tmat4x3< float >  - - - + + + - + - + - + - + - + - + - + - + - + - + - + +< detail::thalf >  +typedef int  +typedef int  +typedef detail::tvec2< int >  +typedef detail::tmat2x2< int >  +typedef detail::tmat2x3< int >  +typedef detail::tmat2x4< int >  +typedef detail::tvec3< int >  +typedef detail::tmat3x2< int >  +typedef detail::tmat3x3< int >  +typedef detail::tmat3x4< int >  +typedef detail::tvec4< int >  +typedef detail::tmat4x2< int >  +typedef detail::tmat4x3< int >  +typedef detail::tmat4x4< int >  - - - + - + - + - + - - + - - + - - + - - + - - + + + - - + - - + + + - - + - - + - - - - - - + - + - + - + - + - + - + - - + - + - + - - + +detail::tvec4< T > 

Typedefs

-typedef bool bool1
bool1
-typedef bool bool1x1
bool1x1
-typedef detail::tvec2< bool > bool2
bool2
-typedef detail::tmat2x2< bool > bool2x2
bool2x2
-typedef detail::tmat2x3< bool > bool2x3
bool2x3
-typedef detail::tmat2x4< bool > bool2x4
bool2x4
-typedef detail::tvec3< bool > bool3
bool3
-typedef detail::tmat3x2< bool > bool3x2
bool3x2
-typedef detail::tmat3x3< bool > bool3x3
bool3x3
-typedef detail::tmat3x4< bool > bool3x4
bool3x4
-typedef detail::tvec4< bool > bool4
bool4
-typedef detail::tmat4x2< bool > bool4x2
bool4x2
-typedef detail::tmat4x3< bool > bool4x3
bool4x3
-typedef detail::tmat4x4< bool > bool4x4
bool4x4
-typedef double double1
double1
-typedef double double1x1
double1x1
-typedef detail::tvec2< double > double2
double2
-typedef detail::tmat2x2< double > double2x2
double2x2
-typedef detail::tmat2x3< double > double2x3
double2x3
-typedef detail::tmat2x4< double > double2x4
double2x4
-typedef detail::tvec3< double > double3
double3
-typedef detail::tmat3x2< double > double3x2
double3x2
-typedef detail::tmat3x3< double > double3x3
double3x3
-typedef detail::tmat3x4< double > double3x4
double3x4
-typedef detail::tvec4< double > double4
double4
-typedef detail::tmat4x2< double > double4x2
double4x2
-typedef detail::tmat4x3< double > double4x3
double4x3
-typedef detail::tmat4x4< double > double4x4
double4x4
-typedef float float1
float1
-typedef float float1x1
float1x1
-typedef detail::tvec2< float > float2
float2
-typedef detail::tmat2x2< float > float2x2
float2x2
-typedef detail::tmat2x3< float > float2x3
float2x3
-typedef detail::tmat2x4< float > float2x4
float2x4
-typedef detail::tvec3< float > float3
float3
-typedef detail::tmat3x2< float > float3x2
float3x2
-typedef detail::tmat3x3< float > float3x3
float3x3
-typedef detail::tmat3x4< float > float3x4
float3x4
-typedef detail::tvec4< float > float4
float4
-typedef detail::tmat4x2< float > float4x2
float4x2
-typedef detail::tmat4x3< float > float4x3
float4x3
-typedef detail::tmat4x4< float > float4x4
-typedef gtc::half_float::half half1
-typedef gtc::half_float::half half1x1
+typedef detail::tmat4x4< float > float4x4
+typedef detail::thalf half1
+typedef detail::thalf half1x1
typedef detail::tvec2
-< gtc::half_float::half > 
half2
+< detail::thalf > half2
typedef detail::tmat2x2
-< gtc::half_float::half > 
half2x2
+< detail::thalf > half2x2
typedef detail::tmat2x3
-< gtc::half_float::half > 
half2x3
+< detail::thalf > half2x3
typedef detail::tmat2x4
-< gtc::half_float::half > 
half2x4
+< detail::thalf > half2x4
typedef detail::tvec3
-< gtc::half_float::half > 
half3
+< detail::thalf > half3
typedef detail::tmat3x2
-< gtc::half_float::half > 
half3x2
+< detail::thalf > half3x2
typedef detail::tmat3x3
-< gtc::half_float::half > 
half3x3
+< detail::thalf > half3x3
typedef detail::tmat3x4
-< gtc::half_float::half > 
half3x4
+< detail::thalf > half3x4
typedef detail::tvec4
-< gtc::half_float::half > 
half4
+< detail::thalf > half4
typedef detail::tmat4x2
-< gtc::half_float::half > 
half4x2
+< detail::thalf > half4x2
typedef detail::tmat4x3
-< gtc::half_float::half > 
half4x3
+< detail::thalf > half4x3
typedef detail::tmat4x4
-< gtc::half_float::half > 
half4x4
half4x4
-typedef int int1
int1
-typedef int int1x1
int1x1
-typedef detail::tvec2< int > int2
int2
-typedef detail::tmat2x2< int > int2x2
int2x2
-typedef detail::tmat2x3< int > int2x3
int2x3
-typedef detail::tmat2x4< int > int2x4
int2x4
-typedef detail::tvec3< int > int3
int3
-typedef detail::tmat3x2< int > int3x2
int3x2
-typedef detail::tmat3x3< int > int3x3
int3x3
-typedef detail::tmat3x4< int > int3x4
int3x4
-typedef detail::tvec4< int > int4
int4
-typedef detail::tmat4x2< int > int4x2
int4x2
-typedef detail::tmat4x3< int > int4x3
int4x3
-typedef detail::tmat4x4< int > int4x4
int4x4

Functions

+
template<typename T >
GLM_FUNC_QUALIFIER T atan2 (T x, T y)
+
GLM_FUNC_QUALIFIER T atan2 (T x, T y)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
atan2 (const detail::tvec2< T > &x, const detail::tvec2< T > &y)
+detail::tvec2< T > atan2 (const detail::tvec2< T > &x, const detail::tvec2< T > &y)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
atan2 (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
+detail::tvec3< T > atan2 (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
atan2 (const detail::tvec4< T > &x, const detail::tvec4< T > &y)
+detail::tvec4< T > atan2 (const detail::tvec4< T > &x, const detail::tvec4< T > &y)
template<typename genType >
bool isfinite (genType const &x)
+
bool isfinite (genType const &x)
template<typename valType >
detail::tvec2< bool > isfinite (const detail::tvec2< valType > &x)
+
detail::tvec2< bool > isfinite (const detail::tvec2< valType > &x)
template<typename valType >
detail::tvec3< bool > isfinite (const detail::tvec3< valType > &x)
+
detail::tvec3< bool > isfinite (const detail::tvec3< valType > &x)
template<typename valType >
detail::tvec4< bool > isfinite (const detail::tvec4< valType > &x)
+
detail::tvec4< bool > isfinite (const detail::tvec4< valType > &x)
template<typename genType >
detail::tvec4< bool > isinf (const detail::tvec4< genType > &x)
+
detail::tvec4< bool > isinf (const detail::tvec4< genType > &x)
template<typename genType >
genType::bool_type isinf (genType const &x)
template<typename genType >
bool isinf (genType const &x)
+
detail::tvec2< bool > isinf (const detail::tvec2< genType > &x)
template<typename genType >
detail::tvec2< bool > isinf (const detail::tvec2< genType > &x)
+
detail::tvec3< bool > isinf (const detail::tvec3< genType > &x)
template<typename genType >
genType::bool_type isnan (genType const &x)
template<typename genType >
detail::tvec3< bool > isinf (const detail::tvec3< genType > &x)
+
detail::tvec2< bool > isnan (const detail::tvec2< genType > &x)
template<typename genType >
bool isnan (genType const &x)
+
detail::tvec3< bool > isnan (const detail::tvec3< genType > &x)
template<typename genType >
detail::tvec2< bool > isnan (const detail::tvec2< genType > &x)
-template<typename genType >
detail::tvec3< bool > isnan (const detail::tvec3< genType > &x)
-template<typename genType >
detail::tvec4< bool > isnan (const detail::tvec4< genType > &x)
+
detail::tvec4< bool > isnan (const detail::tvec4< genType > &x)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, T a)
+detail::tvec4< T > lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, T a)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, const detail::tvec2< T > &a)
+detail::tvec2< T > lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, const detail::tvec2< T > &a)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, T a)
+detail::tvec2< T > lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, T a)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, const detail::tvec3< T > &a)
+detail::tvec3< T > lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, const detail::tvec3< T > &a)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, T a)
+detail::tvec3< T > lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, T a)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, const detail::tvec4< T > &a)
+detail::tvec4< T > lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, const detail::tvec4< T > &a)
template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
+
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec2< T > 
saturate (const detail::tvec2< T > &x)
+detail::tvec2< T > saturate (const detail::tvec2< T > &x)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec3< T > 
saturate (const detail::tvec3< T > &x)
+detail::tvec3< T > saturate (const detail::tvec3< T > &x)
template<typename T >
GLM_FUNC_QUALIFIER T saturate (T x)
+
GLM_FUNC_QUALIFIER T saturate (T x)
template<typename T >
GLM_FUNC_QUALIFIER
-detail::tvec4< T > 
saturate (const detail::tvec4< T > &x)
saturate (const detail::tvec4< T > &x)
-

Detailed Description

+

Detailed Description

Provide functions to increase the compatibility with Cg and HLSL languages.

-

<glm/gtx/compatibility.hpp> need to be included to use these functionalities.

+

<glm/gtx/compatibility.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
bool isinf (genType const & x)
+
+
+ +

Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations.

+

Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)

+

Returns false otherwise, including for implementations with no infinity representations.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL isinf man page
+
+- GLSL 4.20.8 specification, section 8.3
+ +
+
+ +
+
+ + + + + + + + +
bool isnan (genType const & x)
+
+
+ +

Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.

+

Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)

+

Returns false otherwise, including for implementations with no NaN representations.

+
Template Parameters:
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also:
- GLSL isnan man page
+
+- GLSL 4.20.8 specification, section 8.3
+ +
+
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00256.html b/doc/api-0.9.3/a00176.html similarity index 64% rename from doc/api-0.9.2/a00256.html rename to doc/api-0.9.3/a00176.html index 696d1a9e..e11faa4e 100644 --- a/doc/api-0.9.2/a00256.html +++ b/doc/api-0.9.3/a00176.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_component_wise: Component wise

+

Operations between components of a type. -More...

+More...

- + - + - + - +

Functions

template<typename genType >
genType::value_type compAdd (genType const &v)
genType::value_type compAdd (genType const &v)
template<typename genType >
genType::value_type compMax (genType const &v)
genType::value_type compMax (genType const &v)
template<typename genType >
genType::value_type compMin (genType const &v)
genType::value_type compMin (genType const &v)
template<typename genType >
genType::value_type compMul (genType const &v)
genType::value_type compMul (genType const &v)
-

Detailed Description

+

Detailed Description

Operations between components of a type.

-

<glm/gtx/component_wise.hpp> need to be included to use these functionalities.

+

<glm/gtx/component_wise.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -74,12 +74,12 @@ Functions - +
genType::value_type glm::gtx::component_wise::compAdd genType::value_type glm::compAdd ( genType const &  v)
- + @@ -94,12 +94,12 @@ Functions - +
genType::value_type glm::gtx::component_wise::compMax genType::value_type glm::compMax ( genType const &  v)
- + @@ -114,12 +114,12 @@ Functions - +
genType::value_type glm::gtx::component_wise::compMin genType::value_type glm::compMin ( genType const &  v)
- + @@ -137,6 +137,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00177.html b/doc/api-0.9.3/a00177.html new file mode 100644 index 00000000..ebdaf628 --- /dev/null +++ b/doc/api-0.9.3/a00177.html @@ -0,0 +1,49 @@ + + + + +GLM_GTX_constants: Provide build-in constants + + + + + +
+
+
genType::value_type glm::gtx::component_wise::compMul genType::value_type glm::compMul ( genType const &  v)
+ + + + + +
+
+ +
+
+
+

GLM_GTX_constants: Provide build-in constants

+
+
+ +

Allow to perform bit operations on integer values. +More...

+ +
+

Detailed Description

+

Allow to perform bit operations on integer values.

+

<glm/gtx/constants.hpp> need to be included to use these functionalities.

+
+ + + diff --git a/doc/api-0.9.2/a00257.html b/doc/api-0.9.3/a00178.html similarity index 74% rename from doc/api-0.9.2/a00257.html rename to doc/api-0.9.3/a00178.html index ab43ff03..f0bdc787 100644 --- a/doc/api-0.9.2/a00257.html +++ b/doc/api-0.9.3/a00178.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_epsilon: Epsilon comparison

+

Comparison functions for a user defined epsilon values. -More...

+More...

- + - +

Functions

template<typename genTypeT , typename genTypeU >
bool equalEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
bool equalEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
template<typename genTypeT , typename genTypeU >
bool notEqualEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
bool notEqualEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon)
-

Detailed Description

+

Detailed Description

Comparison functions for a user defined epsilon values.

-

<glm/gtx/epsilon.hpp> need to be included to use these functionalities.

+

<glm/gtx/epsilon.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -86,12 +86,12 @@ Functions - +
bool glm::gtx::epsilon::equalEpsilon bool glm::equalEpsilon ( genTypeT const &  x,
- + @@ -125,6 +125,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00258.html b/doc/api-0.9.3/a00179.html similarity index 69% rename from doc/api-0.9.2/a00258.html rename to doc/api-0.9.3/a00179.html index 957827ae..dd55d0d3 100644 --- a/doc/api-0.9.2/a00258.html +++ b/doc/api-0.9.3/a00179.html @@ -7,13 +7,13 @@ - +
bool glm::gtx::epsilon::notEqualEpsilon bool glm::notEqualEpsilon ( genTypeT const &  x,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_euler_angles: Matrix from euler angles

+

Build matrices from Euler angles. -More...

+More...

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Functions

template<typename valType >
detail::tmat4x4< valType > eulerAngleX (valType const &angleX)
detail::tmat4x4< valType > eulerAngleX (valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleXY (valType const &angleX, valType const &angleY)
detail::tmat4x4< valType > eulerAngleXY (valType const &angleX, valType const &angleY)
template<typename valType >
detail::tmat4x4< valType > eulerAngleXZ (valType const &angleX, valType const &angleZ)
detail::tmat4x4< valType > eulerAngleXZ (valType const &angleX, valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleY (valType const &angleY)
detail::tmat4x4< valType > eulerAngleY (valType const &angleY)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYX (valType const &angleY, valType const &angleX)
detail::tmat4x4< valType > eulerAngleYX (valType const &angleY, valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll)
detail::tmat4x4< valType > eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll)
template<typename valType >
detail::tmat4x4< valType > eulerAngleYZ (valType const &angleY, valType const &angleZ)
detail::tmat4x4< valType > eulerAngleYZ (valType const &angleY, valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZ (valType const &angleZ)
detail::tmat4x4< valType > eulerAngleZ (valType const &angleZ)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZX (valType const &angleZ, valType const &angleX)
detail::tmat4x4< valType > eulerAngleZX (valType const &angleZ, valType const &angleX)
template<typename valType >
detail::tmat4x4< valType > eulerAngleZY (valType const &angleZ, valType const &angleY)
detail::tmat4x4< valType > eulerAngleZY (valType const &angleZ, valType const &angleY)
template<typename T >
detail::tmat2x2< T > orientate2 (T const &angle)
detail::tmat2x2< T > orientate2 (T const &angle)
template<typename T >
detail::tmat3x3< T > orientate3 (detail::tvec3< T > const &angles)
detail::tmat3x3< T > orientate3 (detail::tvec3< T > const &angles)
template<typename T >
detail::tmat3x3< T > orientate3 (T const &angle)
detail::tmat3x3< T > orientate3 (T const &angle)
template<typename T >
detail::tmat4x4< T > orientate4 (detail::tvec3< T > const &angles)
detail::tmat4x4< T > orientate4 (detail::tvec3< T > const &angles)
template<typename valType >
detail::tmat4x4< valType > yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll)
detail::tmat4x4< valType > yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll)
-

Detailed Description

+

Detailed Description

Build matrices from Euler angles.

-

<glm/gtx/euler_angles.hpp> need to be included to use these functionalities.

+

<glm/gtx/euler_angles.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -96,12 +96,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleX detail::tmat4x4<valType> glm::eulerAngleX ( valType const &  angleX)
- + @@ -126,12 +126,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleXY detail::tmat4x4<valType> glm::eulerAngleXY ( valType const &  angleX,
- + @@ -156,12 +156,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleXZ detail::tmat4x4<valType> glm::eulerAngleXZ ( valType const &  angleX,
- + @@ -176,12 +176,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleY detail::tmat4x4<valType> glm::eulerAngleY ( valType const &  angleY)
- + @@ -206,12 +206,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleYX detail::tmat4x4<valType> glm::eulerAngleYX ( valType const &  angleY,
- + @@ -242,12 +242,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleYXZ detail::tmat4x4<valType> glm::eulerAngleYXZ ( valType const &  yaw,
- + @@ -272,12 +272,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleYZ detail::tmat4x4<valType> glm::eulerAngleYZ ( valType const &  angleY,
- + @@ -292,12 +292,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleZ detail::tmat4x4<valType> glm::eulerAngleZ ( valType const &  angleZ)
- + @@ -322,12 +322,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleZX detail::tmat4x4<valType> glm::eulerAngleZX ( valType const &  angleZ,
- + @@ -352,12 +352,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleZY detail::tmat4x4<valType> glm::eulerAngleZY ( valType const &  angleZ,
- + @@ -372,12 +372,12 @@ Functions - +
detail::tmat2x2<T> glm::gtx::euler_angles::orientate2 detail::tmat2x2<T> glm::orientate2 ( T const &  angle)
- + @@ -392,12 +392,12 @@ Functions - +
detail::tmat3x3<T> glm::gtx::euler_angles::orientate3 detail::tmat3x3<T> glm::orientate3 ( detail::tvec3< T > const &  angles)
- + @@ -412,12 +412,12 @@ Functions - +
detail::tmat3x3<T> glm::gtx::euler_angles::orientate3 detail::tmat3x3<T> glm::orientate3 ( T const &  angle)
- + @@ -432,12 +432,12 @@ Functions - +
detail::tmat4x4<T> glm::gtx::euler_angles::orientate4 detail::tmat4x4<T> glm::orientate4 ( detail::tvec3< T > const &  angles)
- + @@ -471,6 +471,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00259.html b/doc/api-0.9.3/a00180.html similarity index 73% rename from doc/api-0.9.2/a00259.html rename to doc/api-0.9.3/a00180.html index 15d1e817..b37ecc2c 100644 --- a/doc/api-0.9.2/a00259.html +++ b/doc/api-0.9.3/a00180.html @@ -7,13 +7,13 @@ - +
detail::tmat4x4<valType> glm::gtx::euler_angles::yawPitchRoll detail::tmat4x4<valType> glm::yawPitchRoll ( valType const &  yaw,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_extend: Position extending

+

Extend a position from a source to a position at a defined length. -More...

+More...

- +

Functions

template<typename genType >
genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
-

Detailed Description

+

Detailed Description

Extend a position from a source to a position at a defined length.

-

<glm/gtx/extend.hpp> need to be included to use these functionalities.

+

<glm/gtx/extend.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -87,6 +87,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00260.html b/doc/api-0.9.3/a00181.html similarity index 72% rename from doc/api-0.9.2/a00260.html rename to doc/api-0.9.3/a00181.html index 20500370..c0c4dbba 100644 --- a/doc/api-0.9.2/a00260.html +++ b/doc/api-0.9.3/a00181.html @@ -7,13 +7,13 @@ - +
genType glm::gtx::extend::extend genType glm::extend ( genType const &  Origin,
- +
@@ -21,8 +21,8 @@
-
GLM_GTX_extented_min_max: Extended min max
-
+

GLM_GTX_extented_min_max: Extended min max

+

Min and max functions for 3 to 4 parameters. -More...

+More...

-

Detailed Description

+

Detailed Description

Min and max functions for 3 to 4 parameters.

-

<glm/gtx/extented_min_max.hpp> need to be included to use these functionalities.

+

<glm/gtx/extented_min_max.hpp> need to be included to use these functionalities.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00261.html b/doc/api-0.9.3/a00182.html similarity index 63% rename from doc/api-0.9.2/a00261.html rename to doc/api-0.9.3/a00182.html index bbc105fa..fc677f96 100644 --- a/doc/api-0.9.2/a00261.html +++ b/doc/api-0.9.3/a00182.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_fast_exponential: Fast exponentiation functions

+

Fast but less accurate implementations of exponential based functions. -More...

+More...

- + - + - + - + - - - - - + + + + +

Functions

template<typename T >
fastExp (const T &x)
fastExp (const T &x)
template<typename T >
fastExp2 (const T &x)
fastExp2 (const T &x)
template<typename T >
fastLn (const T &x)
fastLn (const T &x)
template<typename T >
fastLog (const T &x)
fastLog (const T &x)
template<typename T >
fastLog2 (const T &x)
template<typename valType >
valType fastPow (valType const &x, valType const &y)
template<typename T , typename U >
fastPow (const T &x, const U &y)
fastLog2 (const T &x)
template<typename genType >
genType fastPow (genType const &x, genType const &y)
template<typename genTypeT , typename genTypeU >
genTypeT fastPow (genTypeT const &x, genTypeU const &y)
-

Detailed Description

+

Detailed Description

Fast but less accurate implementations of exponential based functions.

-

<glm/gtx/fast_exponential.hpp> need to be included to use these functionalities.

+

<glm/gtx/fast_exponential.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -80,12 +80,12 @@ Functions - +
T glm::gtx::fast_exponential::fastExp T glm::fastExp ( const T &  x)
- + @@ -100,12 +100,12 @@ Functions - +
T glm::gtx::fast_exponential::fastExp2 T glm::fastExp2 ( const T &  x)
- + @@ -120,12 +120,12 @@ Functions - +
T glm::gtx::fast_exponential::fastLn T glm::fastLn ( const T &  x)
- + @@ -140,12 +140,12 @@ Functions - +
T glm::gtx::fast_exponential::fastLog T glm::fastLog ( const T &  x)
- + @@ -160,20 +160,20 @@ Functions - +
T glm::gtx::fast_exponential::fastLog2 T glm::fastLog2 ( const T &  x)
- + - + - + @@ -190,20 +190,20 @@ Functions - +
valType glm::gtx::fast_exponential::fastPow genType glm::fastPow (valType const & genType const &  x,
valType const & genType const &  y 
- + - + - + @@ -223,6 +223,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00262.html b/doc/api-0.9.3/a00183.html similarity index 67% rename from doc/api-0.9.2/a00262.html rename to doc/api-0.9.3/a00183.html index 868c37f5..6e94d931 100644 --- a/doc/api-0.9.2/a00262.html +++ b/doc/api-0.9.3/a00183.html @@ -7,13 +7,13 @@ - +
T glm::gtx::fast_exponential::fastPow genTypeT glm::fastPow (const T & genTypeT const &  x,
const U & genTypeU const &  y 
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_fast_square_root: Fast square root functions

+

Fast but less accurate implementations of square root based functions. -More...

+More...

- + - + - + - + - +

Functions

template<typename genType >
genType::value_type fastDistance (genType const &x, genType const &y)
genType::value_type fastDistance (genType const &x, genType const &y)
template<typename genType >
genType fastInverseSqrt (genType const &x)
genType fastInverseSqrt (genType const &x)
template<typename genType >
genType::value_type fastLength (genType const &x)
genType::value_type fastLength (genType const &x)
template<typename genType >
genType fastNormalize (genType const &x)
genType fastNormalize (genType const &x)
template<typename genType >
genType fastSqrt (genType const &x)
genType fastSqrt (genType const &x)
-

Detailed Description

+

Detailed Description

Fast but less accurate implementations of square root based functions.

-

<glm/gtx/fast_square_root.hpp> need to be included to use these functionalities.

+
    +
  • Sqrt optimisation based on Newton's method, www.gamedev.net/community/forums/topic.asp?topic id=139956
  • +
+

<glm/gtx/fast_square_root.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -86,12 +89,12 @@ Functions - +
genType::value_type glm::gtx::fast_square_root::fastDistance genType::value_type glm::fastDistance ( genType const &  x,
- + @@ -106,12 +109,12 @@ Functions - +
genType glm::gtx::fast_square_root::fastInverseSqrt genType glm::fastInverseSqrt ( genType const &  x)
- + @@ -126,12 +129,12 @@ Functions - +
genType::value_type glm::gtx::fast_square_root::fastLength genType::value_type glm::fastLength ( genType const &  x)
- + @@ -146,12 +149,12 @@ Functions - +
genType glm::gtx::fast_square_root::fastNormalize genType glm::fastNormalize ( genType const &  x)
- + @@ -169,6 +172,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00263.html b/doc/api-0.9.3/a00184.html similarity index 69% rename from doc/api-0.9.2/a00263.html rename to doc/api-0.9.3/a00184.html index 3dc2c7a1..41a2d9bb 100644 --- a/doc/api-0.9.2/a00263.html +++ b/doc/api-0.9.3/a00184.html @@ -7,13 +7,13 @@ - +
genType glm::gtx::fast_square_root::fastSqrt genType glm::fastSqrt ( genType const &  x)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_fast_trigonometry: Fast trigonometric functions

+

Fast but less accurate implementations of trigonometric functions. -More...

+More...

- + - + - + - + - + - + - +

Functions

template<typename T >
fastAcos (const T &angle)
fastAcos (const T &angle)
template<typename T >
fastAsin (const T &angle)
fastAsin (const T &angle)
template<typename T >
fastAtan (const T &angle)
fastAtan (const T &angle)
template<typename T >
fastAtan (const T &y, const T &x)
fastAtan (const T &y, const T &x)
template<typename T >
fastCos (const T &angle)
fastCos (const T &angle)
template<typename T >
fastSin (const T &angle)
fastSin (const T &angle)
template<typename T >
fastTan (const T &angle)
fastTan (const T &angle)
-

Detailed Description

+

Detailed Description

Fast but less accurate implementations of trigonometric functions.

-

<glm/gtx/fast_trigonometry.hpp> need to be included to use these functionalities.

+

<glm/gtx/fast_trigonometry.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -80,12 +80,12 @@ Functions - +
T glm::gtx::fast_trigonometry::fastAcos T glm::fastAcos ( const T &  angle)
- + @@ -100,12 +100,12 @@ Functions - +
T glm::gtx::fast_trigonometry::fastAsin T glm::fastAsin ( const T &  angle)
- + @@ -120,12 +120,12 @@ Functions - +
T glm::gtx::fast_trigonometry::fastAtan T glm::fastAtan ( const T &  angle)
- + @@ -150,12 +150,12 @@ Functions - +
T glm::gtx::fast_trigonometry::fastAtan T glm::fastAtan ( const T &  y,
- + @@ -170,12 +170,12 @@ Functions - +
T glm::gtx::fast_trigonometry::fastCos T glm::fastCos ( const T &  angle)
- + @@ -190,12 +190,12 @@ Functions - +
T glm::gtx::fast_trigonometry::fastSin T glm::fastSin ( const T &  angle)
- + @@ -213,6 +213,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00185.html b/doc/api-0.9.3/a00185.html new file mode 100644 index 00000000..4178d37c --- /dev/null +++ b/doc/api-0.9.3/a00185.html @@ -0,0 +1,136 @@ + + + + +GLM_GTX_gradient_paint: Procedural gradient color + + + + + +
+
+
T glm::gtx::fast_trigonometry::fastTan T glm::fastTan ( const T &  angle)
+ + + + + +
+
+ +
+
+ +
+

GLM_GTX_gradient_paint: Procedural gradient color

+
+
+ +

Functions that return the color of procedural gradient for specific coordinates. +More...

+ + + + + + +

+Functions

template<typename valType >
valType linearGradient (detail::tvec2< valType > const &Point0, detail::tvec2< valType > const &Point1, detail::tvec2< valType > const &Position)
template<typename valType >
valType radialGradient (detail::tvec2< valType > const &Center, valType const &Radius, detail::tvec2< valType > const &Focal, detail::tvec2< valType > const &Position)
+

Detailed Description

+

Functions that return the color of procedural gradient for specific coordinates.

+

<glm/gtx/gradient_paint.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
valType glm::linearGradient (detail::tvec2< valType > const & Point0,
detail::tvec2< valType > const & Point1,
detail::tvec2< valType > const & Position 
)
+
+
+ +

Return a color from a linear gradient.

+
See also:
- GLM_GTX_gradient_paint: Procedural gradient color
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
valType glm::radialGradient (detail::tvec2< valType > const & Center,
valType const & Radius,
detail::tvec2< valType > const & Focal,
detail::tvec2< valType > const & Position 
)
+
+
+ +

Return a color from a radial gradient.

+
See also:
- GLM_GTX_gradient_paint: Procedural gradient color
+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00264.html b/doc/api-0.9.3/a00186.html similarity index 75% rename from doc/api-0.9.2/a00264.html rename to doc/api-0.9.3/a00186.html index 4142fee3..045ed99a 100644 --- a/doc/api-0.9.2/a00264.html +++ b/doc/api-0.9.3/a00186.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_handed_coordinate_space: Space Handedness

+

To know if a set of three basis vectors defines a right or left-handed coordinate system. -More...

+More...

- + - +

Functions

template<typename T >
bool leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
bool leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
template<typename T >
bool rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
bool rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal)
-

Detailed Description

+

Detailed Description

To know if a set of three basis vectors defines a right or left-handed coordinate system.

<glm/gtx/handed_coordinate_system.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -86,12 +86,12 @@ Functions - +
bool glm::gtx::handed_coordinate_space::leftHanded bool glm::leftHanded ( detail::tvec3< T > const &  tangent,
- + @@ -125,6 +125,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00265.html b/doc/api-0.9.3/a00187.html similarity index 60% rename from doc/api-0.9.2/a00265.html rename to doc/api-0.9.3/a00187.html index b9644eb7..7b12a640 100644 --- a/doc/api-0.9.2/a00265.html +++ b/doc/api-0.9.3/a00187.html @@ -7,13 +7,13 @@ - +
bool glm::gtx::handed_coordinate_space::rightHanded bool glm::rightHanded ( detail::tvec3< T > const &  tangent,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_inertia: Intertial matrix

+

Create inertia matrices. -More...

+More...

- + - + - + - + - + - + - + - +

Functions

template<typename T >
detail::tmat3x3< T > ballInertia3 (const T Mass, const T Radius)
detail::tmat3x3< T > ballInertia3 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat4x4< T > ballInertia4 (const T Mass, const T Radius)
detail::tmat4x4< T > ballInertia4 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat3x3< T > boxInertia3 (const T Mass, const detail::tvec3< T > &Scale)
detail::tmat3x3< T > boxInertia3 (T const &Mass, detail::tvec3< T > const &Scale)
template<typename T >
detail::tmat4x4< T > boxInertia4 (const T Mass, const detail::tvec3< T > &Scale)
detail::tmat4x4< T > boxInertia4 (T const &Mass, detail::tvec3< T > const &Scale)
template<typename T >
detail::tmat3x3< T > diskInertia3 (const T Mass, const T Radius)
detail::tmat3x3< T > diskInertia3 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat4x4< T > diskInertia4 (const T Mass, const T Radius)
detail::tmat4x4< T > diskInertia4 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat3x3< T > sphereInertia3 (const T Mass, const T Radius)
detail::tmat3x3< T > sphereInertia3 (T const &Mass, T const &Radius)
template<typename T >
detail::tmat4x4< T > sphereInertia4 (const T Mass, const T Radius)
detail::tmat4x4< T > sphereInertia4 (T const &Mass, T const &Radius)
-

Detailed Description

+

Detailed Description

Create inertia matrices.

-

<glm/gtx/inertia.hpp> need to be included to use these functionalities.

+

<glm/gtx/inertia.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + - + - + @@ -92,20 +92,20 @@ Functions - +
detail::tmat3x3<T> glm::gtx::inertia::ballInertia3 detail::tmat3x3<T> glm::ballInertia3 (const T T const &  Mass,
const T T const &  Radius 
- + - + - + @@ -122,20 +122,20 @@ Functions - +
detail::tmat4x4<T> glm::gtx::inertia::ballInertia4 detail::tmat4x4<T> glm::ballInertia4 (const T T const &  Mass,
const T T const &  Radius 
- + - + - + @@ -152,20 +152,20 @@ Functions - +
detail::tmat3x3<T> glm::gtx::inertia::boxInertia3 detail::tmat3x3<T> glm::boxInertia3 (const T T const &  Mass,
const detail::tvec3< T > & detail::tvec3< T > const &  Scale 
- + - + - + @@ -182,20 +182,20 @@ Functions - +
detail::tmat4x4<T> glm::gtx::inertia::boxInertia4 detail::tmat4x4<T> glm::boxInertia4 (const T T const &  Mass,
const detail::tvec3< T > & detail::tvec3< T > const &  Scale 
- + - + - + @@ -212,20 +212,20 @@ Functions - +
detail::tmat3x3<T> glm::gtx::inertia::diskInertia3 detail::tmat3x3<T> glm::diskInertia3 (const T T const &  Mass,
const T T const &  Radius 
- + - + - + @@ -242,20 +242,20 @@ Functions - +
detail::tmat4x4<T> glm::gtx::inertia::diskInertia4 detail::tmat4x4<T> glm::diskInertia4 (const T T const &  Mass,
const T T const &  Radius 
- + - + - + @@ -272,20 +272,20 @@ Functions - +
detail::tmat3x3<T> glm::gtx::inertia::sphereInertia3 detail::tmat3x3<T> glm::sphereInertia3 (const T T const &  Mass,
const T T const &  Radius 
- + - + - + @@ -305,6 +305,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00266.html b/doc/api-0.9.3/a00188.html similarity index 61% rename from doc/api-0.9.2/a00266.html rename to doc/api-0.9.3/a00188.html index 011119ba..5357ced3 100644 --- a/doc/api-0.9.2/a00266.html +++ b/doc/api-0.9.3/a00188.html @@ -7,13 +7,13 @@ - +
detail::tmat4x4<T> glm::gtx::inertia::sphereInertia4 detail::tmat4x4<T> glm::sphereInertia4 (const T T const &  Mass,
const T T const &  Radius 
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_int_10_10_10_2: Packed integer

+
-

Pack vector to 1010102 integers. Storage only. -More...

+

Pack vector to 1010102 integers. +More...

- +

Functions

dword uint10_10_10_2_cast (glm::vec4 const &v)
dword uint10_10_10_2_cast (glm::vec4 const &v)
-

Detailed Description

-

Pack vector to 1010102 integers. Storage only.

-

<glm/gtx/int_10_10_10_2.hpp> need to be included to use these functionalities.

+

Detailed Description

+

Pack vector to 1010102 integers.

+

Storage only.

+

<glm/gtx/int_10_10_10_2.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + - + @@ -70,6 +71,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00189.html b/doc/api-0.9.3/a00189.html new file mode 100644 index 00000000..9e2efe6c --- /dev/null +++ b/doc/api-0.9.3/a00189.html @@ -0,0 +1,328 @@ + + + + +GLM_GTX_integer: Extended integer functions + + + + + +
+
+
dword glm::gtx::int_10_10_10_2::uint10_10_10_2_cast dword glm::uint10_10_10_2_cast (glm::vec4 const & glm::vec4 const &  v)
+ + + + + +
+
+ +
+
+ +
+

GLM_GTX_integer: Extended integer functions

+
+
+ +

Add support for integer for core functions. +More...

+ + + + + + + + + + + + + + + + +

+Typedefs

typedef signed int sint

+Functions

template<typename genType >
genType factorial (genType const &x)
unsigned int floor_log2 (unsigned int x)
template<typename genIUType >
genIUType log2 (genIUType const &x)
uint mod (uint x, uint y)
int mod (int x, int y)
uint nlz (uint x)
uint pow (uint x, uint y)
int pow (int x, int y)
int sqrt (int x)
uint sqrt (uint x)
+

Detailed Description

+

Add support for integer for core functions.

+

<glm/gtx/integer.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef signed int sint
+
+
+ +

32bit signed integer.

+

From GLM_GTX_integer extension.

+ +

Definition at line 81 of file integer.hpp.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
genType glm::factorial (genType const & x)
+
+
+ +

Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
unsigned int glm::floor_log2 (unsigned int x)
+
+
+ +

Returns the floor log2 of x.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
genIUType glm::log2 (genIUType const & x)
+
+
+ +

Returns the log2 of x.

+

Can be reliably using to compute mipmap count from the texture size. From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
uint glm::mod (uint x,
uint y 
)
+
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int glm::mod (int x,
int y 
)
+
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
uint glm::nlz (uint x)
+
+
+ +

Returns the number of leading zeros.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
uint glm::pow (uint x,
uint y 
)
+
+
+ +

Returns x raised to the y power.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int glm::pow (int x,
int y 
)
+
+
+ +

Returns x raised to the y power.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
int glm::sqrt (int x)
+
+
+ +

Returns the positive square root of x.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
uint glm::sqrt (uint x)
+
+
+ +

Returns the positive square root of x.

+

From GLM_GTX_integer extension.

+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00268.html b/doc/api-0.9.3/a00190.html similarity index 78% rename from doc/api-0.9.2/a00268.html rename to doc/api-0.9.3/a00190.html index 14a74f16..030c5767 100644 --- a/doc/api-0.9.2/a00268.html +++ b/doc/api-0.9.3/a00190.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_intersect: Intersection tests

+

Add intersection functions. -More...

+More...

- + - + - + - +

Functions

template<typename genType >
bool intersectLineSphere (genType const &point0, genType const &point1, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
bool intersectLineSphere (genType const &point0, genType const &point1, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
template<typename genType >
bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
template<typename genType >
bool intersectRaySphere (genType const &orig, genType const &dir, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
bool intersectRaySphere (genType const &orig, genType const &dir, genType const &center, typename genType::value_type radius, genType &position, genType &normal)
template<typename genType >
bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
-

Detailed Description

+

Detailed Description

Add intersection functions.

-

<glm/gtx/intersect.hpp> need to be included to use these functionalities.

+

<glm/gtx/intersect.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -108,12 +108,12 @@ Functions - +
bool glm::gtx::intersect::intersectLineSphere bool glm::intersectLineSphere ( genType const &  point0,
- + @@ -162,12 +162,12 @@ Functions - +
bool glm::gtx::intersect::intersectLineTriangle bool glm::intersectLineTriangle ( genType const &  orig,
- + @@ -216,12 +216,12 @@ Functions - +
bool glm::gtx::intersect::intersectRaySphere bool glm::intersectRaySphere ( genType const &  orig,
- + @@ -273,6 +273,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00269.html b/doc/api-0.9.3/a00191.html similarity index 68% rename from doc/api-0.9.2/a00269.html rename to doc/api-0.9.3/a00191.html index 9e726233..13b38d2b 100644 --- a/doc/api-0.9.2/a00269.html +++ b/doc/api-0.9.3/a00191.html @@ -7,13 +7,13 @@ - +
bool glm::gtx::intersect::intersectRayTriangle bool glm::intersectRayTriangle ( genType const &  orig,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_log_base: Log with base

+
-

Logarithm for any base. base can be a vector or a scalar. -More...

+

Logarithm for any base. +More...

- +

Functions

template<typename genType >
genType log (genType const &x, genType const &base)
genType log (genType const &x, genType const &base)
-

Detailed Description

-

Logarithm for any base. base can be a vector or a scalar.

-

<glm/gtx/log_base.hpp> need to be included to use these functionalities.

+

Detailed Description

+

Logarithm for any base.

+

base can be a vector or a scalar.

+

<glm/gtx/log_base.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -81,6 +82,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00270.html b/doc/api-0.9.3/a00192.html similarity index 64% rename from doc/api-0.9.2/a00270.html rename to doc/api-0.9.3/a00192.html index def51dd0..99ba45b2 100644 --- a/doc/api-0.9.2/a00270.html +++ b/doc/api-0.9.3/a00192.html @@ -7,13 +7,13 @@ - +
genType glm::gtx::log_base::log genType glm::log ( genType const &  x,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_matrix_cross_product: Cross product matrix form

+

Build cross product matrices. -More...

+More...

- + - +

Functions

template<typename T >
detail::tmat3x3< T > matrixCross3 (detail::tvec3< T > const &x)
detail::tmat3x3< T > matrixCross3 (detail::tvec3< T > const &x)
template<typename T >
detail::tmat4x4< T > matrixCross4 (detail::tvec3< T > const &x)
detail::tmat4x4< T > matrixCross4 (detail::tvec3< T > const &x)
-

Detailed Description

+

Detailed Description

Build cross product matrices.

-

<glm/gtx/matrix_cross_product.hpp> need to be included to use these functionalities.

+

<glm/gtx/matrix_cross_product.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -70,12 +70,12 @@ Functions - +
detail::tmat3x3<T> glm::gtx::matrix_cross_product::matrixCross3 detail::tmat3x3<T> glm::matrixCross3 ( detail::tvec3< T > const &  x)
- + @@ -93,6 +93,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00306.html b/doc/api-0.9.3/a00193.html similarity index 69% rename from doc/api-0.9.2/a00306.html rename to doc/api-0.9.3/a00193.html index 49c76884..df36ce00 100644 --- a/doc/api-0.9.2/a00306.html +++ b/doc/api-0.9.3/a00193.html @@ -2,18 +2,18 @@ -Gtx_matrix_interpolation +GLM_GTX_matrix_interpolation: Rotation and translation matrix interpolation - +
detail::tmat4x4<T> glm::gtx::matrix_cross_product::matrixCross4 detail::tmat4x4<T> glm::matrixCross4 ( detail::tvec3< T > const &  x)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_matrix_interpolation: Rotation and translation matrix interpolation

+
+ +

Allows to directly interpolate two exiciting matrices. +More...

- + - + - +

Functions

template<typename T >
void axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle)
void axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle)
template<typename T >
detail::tmat4x4< T > axisAngleMatrix (detail::tvec3< T > const &axis, T const angle)
detail::tmat4x4< T > axisAngleMatrix (detail::tvec3< T > const &axis, T const angle)
template<typename T >
detail::tmat4x4< T > interpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta)
detail::tmat4x4< T > interpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta)
+

Detailed Description

+

Allows to directly interpolate two exiciting matrices.

+

<glm/gtx/matrix_interpolation.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -82,12 +88,12 @@ Functions - +
void glm::gtx::matrix_interpolation::axisAngle void glm::axisAngle ( detail::tmat4x4< T > const &  mat,
- + @@ -112,12 +118,12 @@ Functions - +
detail::tmat4x4<T> glm::gtx::matrix_interpolation::axisAngleMatrix detail::tmat4x4<T> glm::axisAngleMatrix ( detail::tvec3< T > const &  axis,
- + @@ -151,6 +157,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00271.html b/doc/api-0.9.3/a00194.html similarity index 55% rename from doc/api-0.9.2/a00271.html rename to doc/api-0.9.3/a00194.html index df28e96d..2e730c96 100644 --- a/doc/api-0.9.2/a00271.html +++ b/doc/api-0.9.3/a00194.html @@ -7,13 +7,13 @@ - +
detail::tmat4x4<T> glm::gtx::matrix_interpolation::interpolate detail::tmat4x4<T> glm::interpolate ( detail::tmat4x4< T > const &  m1,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_matrix_major_storage: Build matrix

+

Build matrices with specific matrix order, row or column. -More...

+More...

- + - + - + - + - + - + - + - + - + - + - + - +

Functions

template<typename T >
detail::tmat2x2< T > colMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2)
detail::tmat2x2< T > colMajor2 (detail::tvec2< T > const &v1, detail::tvec2< T > const &v2)
template<typename T >
detail::tmat2x2< T > colMajor2 (const detail::tmat2x2< T > &m)
detail::tmat2x2< T > colMajor2 (detail::tmat2x2< T > const &m)
template<typename T >
detail::tmat3x3< T > colMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3)
detail::tmat3x3< T > colMajor3 (detail::tvec3< T > const &v1, detail::tvec3< T > const &v2, detail::tvec3< T > const &v3)
template<typename T >
detail::tmat3x3< T > colMajor3 (const detail::tmat3x3< T > &m)
detail::tmat3x3< T > colMajor3 (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat4x4< T > colMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4)
detail::tmat4x4< T > colMajor4 (detail::tvec4< T > const &v1, detail::tvec4< T > const &v2, detail::tvec4< T > const &v3, detail::tvec4< T > const &v4)
template<typename T >
detail::tmat4x4< T > colMajor4 (const detail::tmat4x4< T > &m)
detail::tmat4x4< T > colMajor4 (detail::tmat4x4< T > const &m)
template<typename T >
detail::tmat2x2< T > rowMajor2 (const detail::tmat2x2< T > &m)
detail::tmat2x2< T > rowMajor2 (detail::tmat2x2< T > const &m)
template<typename T >
detail::tmat2x2< T > rowMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2)
detail::tmat2x2< T > rowMajor2 (detail::tvec2< T > const &v1, detail::tvec2< T > const &v2)
template<typename T >
detail::tmat3x3< T > rowMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3)
detail::tmat3x3< T > rowMajor3 (detail::tvec3< T > const &v1, detail::tvec3< T > const &v2, detail::tvec3< T > const &v3)
template<typename T >
detail::tmat3x3< T > rowMajor3 (const detail::tmat3x3< T > &m)
detail::tmat3x3< T > rowMajor3 (detail::tmat3x3< T > const &m)
template<typename T >
detail::tmat4x4< T > rowMajor4 (const detail::tmat4x4< T > &m)
detail::tmat4x4< T > rowMajor4 (detail::tmat4x4< T > const &m)
template<typename T >
detail::tmat4x4< T > rowMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4)
detail::tmat4x4< T > rowMajor4 (detail::tvec4< T > const &v1, detail::tvec4< T > const &v2, detail::tvec4< T > const &v3, detail::tvec4< T > const &v4)
-

Detailed Description

+

Detailed Description

Build matrices with specific matrix order, row or column.

-

<glm/gtx/matrix_major_storage.hpp> need to be included to use these functionalities.

+

<glm/gtx/matrix_major_storage.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + - + - + @@ -100,14 +100,14 @@ Functions - +
detail::tmat2x2<T> glm::gtx::matrix_major_storage::colMajor2 detail::tmat2x2<T> glm::colMajor2 (const detail::tvec2< T > & detail::tvec2< T > const &  v1,
const detail::tvec2< T > & detail::tvec2< T > const &  v2 
- + - + @@ -120,26 +120,26 @@ Functions - +
detail::tmat2x2<T> glm::gtx::matrix_major_storage::colMajor2 detail::tmat2x2<T> glm::colMajor2 (const detail::tmat2x2< T > & detail::tmat2x2< T > const &  m)
- + - + - + - + @@ -156,14 +156,14 @@ Functions - +
detail::tmat3x3<T> glm::gtx::matrix_major_storage::colMajor3 detail::tmat3x3<T> glm::colMajor3 (const detail::tvec3< T > & detail::tvec3< T > const &  v1,
const detail::tvec3< T > & detail::tvec3< T > const &  v2,
const detail::tvec3< T > & detail::tvec3< T > const &  v3 
- + - + @@ -176,32 +176,32 @@ Functions - +
detail::tmat3x3<T> glm::gtx::matrix_major_storage::colMajor3 detail::tmat3x3<T> glm::colMajor3 (const detail::tmat3x3< T > & detail::tmat3x3< T > const &  m)
- + - + - + - + - + @@ -218,14 +218,14 @@ Functions - +
detail::tmat4x4<T> glm::gtx::matrix_major_storage::colMajor4 detail::tmat4x4<T> glm::colMajor4 (const detail::tvec4< T > & detail::tvec4< T > const &  v1,
const detail::tvec4< T > & detail::tvec4< T > const &  v2,
const detail::tvec4< T > & detail::tvec4< T > const &  v3,
const detail::tvec4< T > & detail::tvec4< T > const &  v4 
- + - + @@ -238,14 +238,14 @@ Functions - +
detail::tmat4x4<T> glm::gtx::matrix_major_storage::colMajor4 detail::tmat4x4<T> glm::colMajor4 (const detail::tmat4x4< T > & detail::tmat4x4< T > const &  m)
- + - + @@ -258,20 +258,20 @@ Functions - +
detail::tmat2x2<T> glm::gtx::matrix_major_storage::rowMajor2 detail::tmat2x2<T> glm::rowMajor2 (const detail::tmat2x2< T > & detail::tmat2x2< T > const &  m)
- + - + - + @@ -288,26 +288,26 @@ Functions - +
detail::tmat2x2<T> glm::gtx::matrix_major_storage::rowMajor2 detail::tmat2x2<T> glm::rowMajor2 (const detail::tvec2< T > & detail::tvec2< T > const &  v1,
const detail::tvec2< T > & detail::tvec2< T > const &  v2 
- + - + - + - + @@ -324,14 +324,14 @@ Functions - +
detail::tmat3x3<T> glm::gtx::matrix_major_storage::rowMajor3 detail::tmat3x3<T> glm::rowMajor3 (const detail::tvec3< T > & detail::tvec3< T > const &  v1,
const detail::tvec3< T > & detail::tvec3< T > const &  v2,
const detail::tvec3< T > & detail::tvec3< T > const &  v3 
- + - + @@ -344,14 +344,14 @@ Functions - +
detail::tmat3x3<T> glm::gtx::matrix_major_storage::rowMajor3 detail::tmat3x3<T> glm::rowMajor3 (const detail::tmat3x3< T > & detail::tmat3x3< T > const &  m)
- + - + @@ -364,32 +364,32 @@ Functions - +
detail::tmat4x4<T> glm::gtx::matrix_major_storage::rowMajor4 detail::tmat4x4<T> glm::rowMajor4 (const detail::tmat4x4< T > & detail::tmat4x4< T > const &  m)
- + - + - + - + - + @@ -409,6 +409,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00272.html b/doc/api-0.9.3/a00195.html similarity index 66% rename from doc/api-0.9.2/a00272.html rename to doc/api-0.9.3/a00195.html index ae8d212c..5e0a282f 100644 --- a/doc/api-0.9.2/a00272.html +++ b/doc/api-0.9.3/a00195.html @@ -7,13 +7,13 @@ - +
detail::tmat4x4<T> glm::gtx::matrix_major_storage::rowMajor4 detail::tmat4x4<T> glm::rowMajor4 (const detail::tvec4< T > & detail::tvec4< T > const &  v1,
const detail::tvec4< T > & detail::tvec4< T > const &  v2,
const detail::tvec4< T > & detail::tvec4< T > const &  v3,
const detail::tvec4< T > & detail::tvec4< T > const &  v4 
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_matrix_operation: Extended matrix operations

+

Build diagonal matrices from vectors. -More...

+More...

- + - + - + - + - + - + - + - + - +

Functions

template<typename valType >
detail::tmat2x2< valType > diagonal2x2 (detail::tvec2< valType > const &v)
detail::tmat2x2< valType > diagonal2x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat2x3< valType > diagonal2x3 (detail::tvec2< valType > const &v)
detail::tmat2x3< valType > diagonal2x3 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat2x4< valType > diagonal2x4 (detail::tvec2< valType > const &v)
detail::tmat2x4< valType > diagonal2x4 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat3x2< valType > diagonal3x2 (detail::tvec2< valType > const &v)
detail::tmat3x2< valType > diagonal3x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat3x3< valType > diagonal3x3 (detail::tvec3< valType > const &v)
detail::tmat3x3< valType > diagonal3x3 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat3x4< valType > diagonal3x4 (detail::tvec3< valType > const &v)
detail::tmat3x4< valType > diagonal3x4 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat4x2< valType > diagonal4x2 (detail::tvec2< valType > const &v)
detail::tmat4x2< valType > diagonal4x2 (detail::tvec2< valType > const &v)
template<typename valType >
detail::tmat4x3< valType > diagonal4x3 (detail::tvec3< valType > const &v)
detail::tmat4x3< valType > diagonal4x3 (detail::tvec3< valType > const &v)
template<typename valType >
detail::tmat4x4< valType > diagonal4x4 (detail::tvec4< valType > const &v)
detail::tmat4x4< valType > diagonal4x4 (detail::tvec4< valType > const &v)
-

Detailed Description

+

Detailed Description

Build diagonal matrices from vectors.

-

<glm/gtx/matrix_operation.hpp> need to be included to use these functionalities.

+

<glm/gtx/matrix_operation.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -84,12 +84,12 @@ Functions - +
detail::tmat2x2<valType> glm::gtx::matrix_operation::diagonal2x2 detail::tmat2x2<valType> glm::diagonal2x2 ( detail::tvec2< valType > const &  v)
- + @@ -104,12 +104,12 @@ Functions - +
detail::tmat2x3<valType> glm::gtx::matrix_operation::diagonal2x3 detail::tmat2x3<valType> glm::diagonal2x3 ( detail::tvec2< valType > const &  v)
- + @@ -124,12 +124,12 @@ Functions - +
detail::tmat2x4<valType> glm::gtx::matrix_operation::diagonal2x4 detail::tmat2x4<valType> glm::diagonal2x4 ( detail::tvec2< valType > const &  v)
- + @@ -144,12 +144,12 @@ Functions - +
detail::tmat3x2<valType> glm::gtx::matrix_operation::diagonal3x2 detail::tmat3x2<valType> glm::diagonal3x2 ( detail::tvec2< valType > const &  v)
- + @@ -164,12 +164,12 @@ Functions - +
detail::tmat3x3<valType> glm::gtx::matrix_operation::diagonal3x3 detail::tmat3x3<valType> glm::diagonal3x3 ( detail::tvec3< valType > const &  v)
- + @@ -184,12 +184,12 @@ Functions - +
detail::tmat3x4<valType> glm::gtx::matrix_operation::diagonal3x4 detail::tmat3x4<valType> glm::diagonal3x4 ( detail::tvec3< valType > const &  v)
- + @@ -204,12 +204,12 @@ Functions - +
detail::tmat4x2<valType> glm::gtx::matrix_operation::diagonal4x2 detail::tmat4x2<valType> glm::diagonal4x2 ( detail::tvec2< valType > const &  v)
- + @@ -224,12 +224,12 @@ Functions - +
detail::tmat4x3<valType> glm::gtx::matrix_operation::diagonal4x3 detail::tmat4x3<valType> glm::diagonal4x3 ( detail::tvec3< valType > const &  v)
- + @@ -247,6 +247,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00273.html b/doc/api-0.9.3/a00196.html similarity index 58% rename from doc/api-0.9.2/a00273.html rename to doc/api-0.9.3/a00196.html index a3c4cbeb..88aa3dfb 100644 --- a/doc/api-0.9.2/a00273.html +++ b/doc/api-0.9.3/a00196.html @@ -7,13 +7,13 @@ - +
detail::tmat4x4<valType> glm::gtx::matrix_operation::diagonal4x4 detail::tmat4x4<valType> glm::diagonal4x4 ( detail::tvec4< valType > const &  v)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_matrix_query: Query matrix properties

+

Query to evaluate matrix properties. -More...

+More...

- + - + - + - + - + - + - + - +

Functions

template<typename genType >
bool isIdentity (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool isIdentity (genType const &m, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename T >
bool isNormalized (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
bool isNormalized (detail::tmat2x2< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNormalized (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
bool isNormalized (detail::tmat4x4< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNormalized (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
bool isNormalized (detail::tmat3x3< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
bool isNull (detail::tmat2x2< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
bool isNull (detail::tmat3x3< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename T >
bool isNull (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon())
bool isNull (detail::tmat4x4< T > const &m, T const &epsilon=std::numeric_limits< T >::epsilon())
template<typename genType >
bool isOrthogonal (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool isOrthogonal (genType const &m, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
-

Detailed Description

+

Detailed Description

Query to evaluate matrix properties.

-

<glm/gtx/matrix_query.hpp> need to be included to use these functionalities.

+

<glm/gtx/matrix_query.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + - + - + @@ -92,20 +92,20 @@ Functions - +
bool glm::gtx::matrix_query::isIdentity bool glm::isIdentity (const genType & genType const &  m,
const typename genType::value_type typename genType::value_type const &  epsilon = std::numeric_limits< typename genType::value_type >::epsilon() 
- + - + - + @@ -122,20 +122,20 @@ Functions - +
bool glm::gtx::matrix_query::isNormalized bool glm::isNormalized (const detail::tmat2x2< T > & detail::tmat2x2< T > const &  m,
const T T const &  epsilon = std::numeric_limits< T >::epsilon() 
- + - + - + @@ -152,20 +152,20 @@ Functions - +
bool glm::gtx::matrix_query::isNormalized bool glm::isNormalized (const detail::tmat4x4< T > & detail::tmat4x4< T > const &  m,
const T T const &  epsilon = std::numeric_limits< T >::epsilon() 
- + - + - + @@ -182,20 +182,20 @@ Functions - +
bool glm::gtx::matrix_query::isNormalized bool glm::isNormalized (const detail::tmat3x3< T > & detail::tmat3x3< T > const &  m,
const T T const &  epsilon = std::numeric_limits< T >::epsilon() 
- + - + - + @@ -212,20 +212,20 @@ Functions - +
bool glm::gtx::matrix_query::isNull bool glm::isNull (const detail::tmat2x2< T > & detail::tmat2x2< T > const &  m,
const T T const &  epsilon = std::numeric_limits< T >::epsilon() 
- + - + - + @@ -242,20 +242,20 @@ Functions - +
bool glm::gtx::matrix_query::isNull bool glm::isNull (const detail::tmat3x3< T > & detail::tmat3x3< T > const &  m,
const T T const &  epsilon = std::numeric_limits< T >::epsilon() 
- + - + - + @@ -272,20 +272,20 @@ Functions - +
bool glm::gtx::matrix_query::isNull bool glm::isNull (const detail::tmat4x4< T > & detail::tmat4x4< T > const &  m,
const T T const &  epsilon = std::numeric_limits< T >::epsilon() 
- + - + - + @@ -305,6 +305,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00274.html b/doc/api-0.9.3/a00197.html similarity index 68% rename from doc/api-0.9.2/a00274.html rename to doc/api-0.9.3/a00197.html index dac7b7bd..df36734f 100644 --- a/doc/api-0.9.2/a00274.html +++ b/doc/api-0.9.3/a00197.html @@ -7,13 +7,13 @@ - +
bool glm::gtx::matrix_query::isOrthogonal bool glm::isOrthogonal (const genType & genType const &  m,
const typename genType::value_type typename genType::value_type const &  epsilon = std::numeric_limits< typename genType::value_type >::epsilon() 
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_mixed_producte: Mixed product

+

Mixed product of 3 vectors. -More...

+More...

- - +

Functions

+
template<typename valType >
valType mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3)
valType mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3)
-

Detailed Description

+

Detailed Description

Mixed product of 3 vectors.

-

<glm/gtx/mixed_product.hpp> need to be included to use these functionalities.

+

<glm/gtx/mixed_product.hpp> need to be included to use these functionalities.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00275.html b/doc/api-0.9.3/a00198.html similarity index 72% rename from doc/api-0.9.2/a00275.html rename to doc/api-0.9.3/a00198.html index ca250671..c873f023 100644 --- a/doc/api-0.9.2/a00275.html +++ b/doc/api-0.9.3/a00198.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_multiple: Multiples

+

Find the closest number of a number multiple of other number. -More...

+More...

- + - +

Functions

template<typename genType >
genType higherMultiple (genType const &Source, genType const &Multiple)
genType higherMultiple (genType const &Source, genType const &Multiple)
template<typename genType >
genType lowerMultiple (genType const &Source, genType const &Multiple)
genType lowerMultiple (genType const &Source, genType const &Multiple)
-

Detailed Description

+

Detailed Description

Find the closest number of a number multiple of other number.

-

<glm/gtx/multiple.hpp> need to be included to use these functionalities.

+

<glm/gtx/multiple.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -80,12 +80,12 @@ Functions - +
genType glm::gtx::multiple::higherMultiple genType glm::higherMultiple ( genType const &  Source,
- + @@ -113,6 +113,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00199.html b/doc/api-0.9.3/a00199.html new file mode 100644 index 00000000..8e99eaf8 --- /dev/null +++ b/doc/api-0.9.3/a00199.html @@ -0,0 +1,48 @@ + + + + +GLM_GTX_noise: Procedural noise functions + + + + + +
+
+
genType glm::gtx::multiple::lowerMultiple genType glm::lowerMultiple ( genType const &  Source,
+ + + + + +
+
+ +
+
+
+

GLM_GTX_noise: Procedural noise functions

+
+
+ +

Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf Defines the half-precision floating-point type, along with various typedefs for vectors and matrices. +More...

+ +
+

Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf Defines the half-precision floating-point type, along with various typedefs for vectors and matrices.

+

<glm/gtx/noise.hpp> need to be included to use these functionalities.

+
+ + + diff --git a/doc/api-0.9.3/a00200.html b/doc/api-0.9.3/a00200.html new file mode 100644 index 00000000..69f2db8e --- /dev/null +++ b/doc/api-0.9.3/a00200.html @@ -0,0 +1,362 @@ + + + + +GLM_GTX_norm: Vector norm calculations + + + + + +
+
+ + + + + + +
+
+ +
+
+ +
+

GLM_GTX_norm: Vector norm calculations

+
+
+ +

Various way to compute vector norms. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
distance2 (T const &p0, T const &p1)
template<typename genType >
genType::value_type distance2 (genType const &p0, genType const &p1)
template<typename T >
l1Norm (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
template<typename T >
l1Norm (detail::tvec3< T > const &v)
template<typename T >
l2Norm (detail::tvec3< T > const &x, detail::tvec3< T > const &y)
template<typename T >
l2Norm (detail::tvec3< T > const &x)
template<typename genType >
genType::value_type length2 (genType const &x)
template<typename T >
length2 (T const &x)
template<typename T >
length2 (detail::tquat< T > const &q)
template<typename T >
lxNorm (detail::tvec3< T > const &x, detail::tvec3< T > const &y, unsigned int Depth)
template<typename T >
lxNorm (detail::tvec3< T > const &x, unsigned int Depth)
+

Detailed Description

+

Various way to compute vector norms.

+

<glm/gtx/norm.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
T glm::distance2 (T const & p0,
T const & p1 
)
+
+
+ +

Returns the squared distance between p0 and p1, i.e., length(p0 - p1).

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
genType::value_type glm::distance2 (genType const & p0,
genType const & p1 
)
+
+
+ +

Returns the squared distance between p0 and p1, i.e., length(p0 - p1).

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
T glm::l1Norm (detail::tvec3< T > const & x,
detail::tvec3< T > const & y 
)
+
+
+ +

Returns the L1 norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
T glm::l1Norm (detail::tvec3< T > const & v)
+
+
+ +

Returns the L1 norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
T glm::l2Norm (detail::tvec3< T > const & x,
detail::tvec3< T > const & y 
)
+
+
+ +

Returns the L2 norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
T glm::l2Norm (detail::tvec3< T > const & x)
+
+
+ +

Returns the L2 norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
genType::value_type glm::length2 (genType const & x)
+
+
+ +

Returns the squared length of x.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
T glm::length2 (T const & x)
+
+
+ +

Returns the squared length of x.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
T glm::length2 (detail::tquat< T > const & q)
+
+
+ +

Returns the squared length of x.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
T glm::lxNorm (detail::tvec3< T > const & x,
detail::tvec3< T > const & y,
unsigned int Depth 
)
+
+
+ +

Returns the L norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
T glm::lxNorm (detail::tvec3< T > const & x,
unsigned int Depth 
)
+
+
+ +

Returns the L norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00277.html b/doc/api-0.9.3/a00201.html similarity index 71% rename from doc/api-0.9.2/a00277.html rename to doc/api-0.9.3/a00201.html index a71cca89..cb26021f 100644 --- a/doc/api-0.9.2/a00277.html +++ b/doc/api-0.9.3/a00201.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_normal: Compute normals

+

Compute the normal of a triangle. -More...

+More...

- +

Functions

template<typename T >
detail::tvec3< T > triangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3)
detail::tvec3< T > triangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3)
-

Detailed Description

+

Detailed Description

Compute the normal of a triangle.

-

<glm/gtx/normal.hpp> need to be included to use these functionalities.

+

<glm/gtx/normal.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -87,6 +87,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00278.html b/doc/api-0.9.3/a00202.html similarity index 72% rename from doc/api-0.9.2/a00278.html rename to doc/api-0.9.3/a00202.html index 5ad7339a..6c555a34 100644 --- a/doc/api-0.9.2/a00278.html +++ b/doc/api-0.9.3/a00202.html @@ -7,13 +7,13 @@ - +
detail::tvec3<T> glm::gtx::normal::triangleNormal detail::tvec3<T> glm::triangleNormal ( detail::tvec3< T > const &  p1,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_normalize_dot: Normalize dot product

+

Dot product of vectors that need to be normalize with a single square root. -More...

+More...

- + - +

Functions

template<typename genType >
genType::value_type fastNormalizeDot (genType const &x, genType const &y)
genType::value_type fastNormalizeDot (genType const &x, genType const &y)
template<typename genType >
genType::value_type normalizeDot (genType const &x, genType const &y)
genType::value_type normalizeDot (genType const &x, genType const &y)
-

Detailed Description

+

Detailed Description

Dot product of vectors that need to be normalize with a single square root.

<glm/gtx/normalized_dot.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -80,12 +80,12 @@ Functions - +
genType::value_type glm::gtx::normalize_dot::fastNormalizeDot genType::value_type glm::fastNormalizeDot ( genType const &  x,
- + @@ -113,6 +113,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00279.html b/doc/api-0.9.3/a00203.html similarity index 78% rename from doc/api-0.9.2/a00279.html rename to doc/api-0.9.3/a00203.html index b1b6d004..3bf3c182 100644 --- a/doc/api-0.9.2/a00279.html +++ b/doc/api-0.9.3/a00203.html @@ -7,13 +7,13 @@ - +
genType::value_type glm::gtx::normalize_dot::normalizeDot genType::value_type glm::normalizeDot ( genType const &  x,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_number_precision: Number precision

+

Defined size types. -More...

+More...

+typedef f16  +typedef f16  +typedef f16  +typedef f32  +typedef f32  +typedef f32  +typedef f64  +typedef f64  +typedef f64  +typedef u16  +typedef u32  +typedef u64  +typedef u8 

Typedefs

-typedef f16 f16mat1
f16mat1
-typedef f16 f16mat1x1
f16mat1x1
-typedef f16 f16vec1
f16vec1
-typedef f32 f32mat1
f32mat1
-typedef f32 f32mat1x1
f32mat1x1
-typedef f32 f32vec1
f32vec1
-typedef f64 f64mat1
f64mat1
-typedef f64 f64mat1x1
f64mat1x1
-typedef f64 f64vec1
f64vec1
-typedef u16 u16vec1
u16vec1
-typedef u32 u32vec1
u32vec1
-typedef u64 u64vec1
u64vec1
-typedef u8 u8vec1
u8vec1
-

Detailed Description

+

Detailed Description

Defined size types.

-

<glm/gtx/number_precision.hpp> need to be included to use these functionalities.

+

<glm/gtx/number_precision.hpp> need to be included to use these functionalities.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00280.html b/doc/api-0.9.3/a00204.html similarity index 82% rename from doc/api-0.9.2/a00280.html rename to doc/api-0.9.3/a00204.html index 5dc4070b..028bc1fb 100644 --- a/doc/api-0.9.2/a00280.html +++ b/doc/api-0.9.3/a00204.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_ocl_type: OpenCL types

+

OpenCL types. -More...

+More...

+typedef detail::int8  +typedef detail::int8  +< detail::int8 >  +< detail::int8 >  +< detail::int8 >  +typedef detail::float32  +typedef detail::float32  +< detail::float32 >  +< detail::float32 >  +< detail::float32 >  +typedef detail::float16  +typedef detail::int32  +typedef detail::int32  +< detail::int32 >  +< detail::int32 >  +< detail::int32 >  +typedef detail::int64  +typedef detail::int64  +< detail::int64 >  +< detail::int64 >  +< detail::int64 >  +typedef detail::int16  +typedef detail::int16  +< detail::int16 >  +< detail::int16 >  +< detail::int16 >  +typedef detail::uint8  +typedef detail::uint8  +< detail::uint8 >  +< detail::uint8 >  +< detail::uint8 >  +typedef detail::uint32  +typedef detail::uint32  +< detail::uint32 >  +< detail::uint32 >  +< detail::uint32 >  +typedef detail::uint64  +typedef detail::uint64  +< detail::uint64 >  +< detail::uint64 >  +< detail::uint64 >  +typedef detail::uint16  +typedef detail::uint16  +< detail::uint16 >  +< detail::uint16 >  +< detail::uint16 > 

Typedefs

-typedef detail::int8 cl_char
cl_char
-typedef detail::int8 cl_char1
cl_char1
typedef detail::tvec2
-< detail::int8 > 
cl_char2
cl_char2
typedef detail::tvec3
-< detail::int8 > 
cl_char3
cl_char3
typedef detail::tvec4
-< detail::int8 > 
cl_char4
cl_char4
-typedef detail::float32 cl_float
cl_float
-typedef detail::float32 cl_float1
cl_float1
typedef detail::tvec2
-< detail::float32 > 
cl_float2
cl_float2
typedef detail::tvec3
-< detail::float32 > 
cl_float3
cl_float3
typedef detail::tvec4
-< detail::float32 > 
cl_float4
cl_float4
-typedef detail::float16 cl_half
cl_half
-typedef detail::int32 cl_int
cl_int
-typedef detail::int32 cl_int1
cl_int1
typedef detail::tvec2
-< detail::int32 > 
cl_int2
cl_int2
typedef detail::tvec3
-< detail::int32 > 
cl_int3
cl_int3
typedef detail::tvec4
-< detail::int32 > 
cl_int4
cl_int4
-typedef detail::int64 cl_long
cl_long
-typedef detail::int64 cl_long1
cl_long1
typedef detail::tvec2
-< detail::int64 > 
cl_long2
cl_long2
typedef detail::tvec3
-< detail::int64 > 
cl_long3
cl_long3
typedef detail::tvec4
-< detail::int64 > 
cl_long4
cl_long4
-typedef detail::int16 cl_short
cl_short
-typedef detail::int16 cl_short1
cl_short1
typedef detail::tvec2
-< detail::int16 > 
cl_short2
cl_short2
typedef detail::tvec3
-< detail::int16 > 
cl_short3
cl_short3
typedef detail::tvec4
-< detail::int16 > 
cl_short4
cl_short4
-typedef detail::uint8 cl_uchar
cl_uchar
-typedef detail::uint8 cl_uchar1
cl_uchar1
typedef detail::tvec2
-< detail::uint8 > 
cl_uchar2
cl_uchar2
typedef detail::tvec3
-< detail::uint8 > 
cl_uchar3
cl_uchar3
typedef detail::tvec4
-< detail::uint8 > 
cl_uchar4
cl_uchar4
-typedef detail::uint32 cl_uint
cl_uint
-typedef detail::uint32 cl_uint1
cl_uint1
typedef detail::tvec2
-< detail::uint32 > 
cl_uint2
cl_uint2
typedef detail::tvec3
-< detail::uint32 > 
cl_uint3
cl_uint3
typedef detail::tvec4
-< detail::uint32 > 
cl_uint4
cl_uint4
-typedef detail::uint64 cl_ulong
cl_ulong
-typedef detail::uint64 cl_ulong1
cl_ulong1
typedef detail::tvec2
-< detail::uint64 > 
cl_ulong2
cl_ulong2
typedef detail::tvec3
-< detail::uint64 > 
cl_ulong3
cl_ulong3
typedef detail::tvec4
-< detail::uint64 > 
cl_ulong4
cl_ulong4
-typedef detail::uint16 cl_ushort
cl_ushort
-typedef detail::uint16 cl_ushort1
cl_ushort1
typedef detail::tvec2
-< detail::uint16 > 
cl_ushort2
cl_ushort2
typedef detail::tvec3
-< detail::uint16 > 
cl_ushort3
cl_ushort3
typedef detail::tvec4
-< detail::uint16 > 
cl_ushort4
cl_ushort4
-

Detailed Description

+

Detailed Description

OpenCL types.

-

<glm/gtx/ocl_type.hpp> need to be included to use these functionalities.

+

<glm/gtx/ocl_type.hpp> need to be included to use these functionalities.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00281.html b/doc/api-0.9.3/a00205.html similarity index 66% rename from doc/api-0.9.2/a00281.html rename to doc/api-0.9.3/a00205.html index f23e9c71..6b9fbee2 100644 --- a/doc/api-0.9.2/a00281.html +++ b/doc/api-0.9.3/a00205.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_optimum_pow: Optimum pow

+

Integer exponentiation of power functions. -More...

+More...

- + - + - - - - - + + + + +

Functions

template<typename genType >
genType pow2 (const genType &x)
genType pow2 (const genType &x)
template<typename genType >
genType pow3 (const genType &x)
genType pow3 (const genType &x)
template<typename genType >
genType pow4 (const genType &x)
detail::tvec2< bool > powOfTwo (const detail::tvec2< int > &x)
bool powOfTwo (int num)
detail::tvec3< bool > powOfTwo (const detail::tvec3< int > &x)
detail::tvec4< bool > powOfTwo (const detail::tvec4< int > &x)
genType pow4 (const genType &x)
detail::tvec2< bool > powOfTwo (const detail::tvec2< int > &x)
bool powOfTwo (int num)
detail::tvec3< bool > powOfTwo (const detail::tvec3< int > &x)
detail::tvec4< bool > powOfTwo (const detail::tvec4< int > &x)
-

Detailed Description

+

Detailed Description

Integer exponentiation of power functions.

-

<glm/gtx/optimum_pow.hpp> need to be included to use these functionalities.

+

<glm/gtx/optimum_pow.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -76,12 +76,12 @@ Functions - +
genType glm::gtx::optimum_pow::pow2 genType glm::gtx::pow2 ( const genType &  x)
- + @@ -96,12 +96,12 @@ Functions - +
genType glm::gtx::optimum_pow::pow3 genType glm::gtx::pow3 ( const genType &  x)
- + @@ -116,12 +116,12 @@ Functions - +
genType glm::gtx::optimum_pow::pow4 genType glm::gtx::pow4 ( const genType &  x)
- + @@ -136,12 +136,12 @@ Functions - +
detail::tvec2<bool> glm::gtx::optimum_pow::powOfTwo detail::tvec2<bool> glm::gtx::powOfTwo ( const detail::tvec2< int > &  x)
- + @@ -156,12 +156,12 @@ Functions - +
bool glm::gtx::optimum_pow::powOfTwo bool glm::gtx::powOfTwo ( int  num)
- + @@ -176,12 +176,12 @@ Functions - +
detail::tvec3<bool> glm::gtx::optimum_pow::powOfTwo detail::tvec3<bool> glm::gtx::powOfTwo ( const detail::tvec3< int > &  x)
- + @@ -199,6 +199,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00282.html b/doc/api-0.9.3/a00206.html similarity index 66% rename from doc/api-0.9.2/a00282.html rename to doc/api-0.9.3/a00206.html index 508778b6..6bbe3acf 100644 --- a/doc/api-0.9.2/a00282.html +++ b/doc/api-0.9.3/a00206.html @@ -7,13 +7,13 @@ - +
detail::tvec4<bool> glm::gtx::optimum_pow::powOfTwo detail::tvec4<bool> glm::gtx::powOfTwo ( const detail::tvec4< int > &  x)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_orthonormalize: Orthonormalize

+

Orthonormalize matrices. -More...

+More...

- + - +

Functions

template<typename T >
detail::tmat3x3< T > orthonormalize (const detail::tmat3x3< T > &m)
detail::tmat3x3< T > orthonormalize (const detail::tmat3x3< T > &m)
template<typename T >
detail::tvec3< T > orthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
detail::tvec3< T > orthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y)
-

Detailed Description

+

Detailed Description

Orthonormalize matrices.

-

<glm/gtx/orthonormalize.hpp> need to be included to use these functionalities.

+

<glm/gtx/orthonormalize.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -70,12 +70,12 @@ Functions - +
detail::tmat3x3<T> glm::gtx::orthonormalize::orthonormalize detail::tmat3x3<T> glm::orthonormalize ( const detail::tmat3x3< T > &  m)
- + @@ -103,6 +103,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00207.html b/doc/api-0.9.3/a00207.html new file mode 100644 index 00000000..7d11d4a5 --- /dev/null +++ b/doc/api-0.9.3/a00207.html @@ -0,0 +1,86 @@ + + + + +GLM_GTX_perpendicular: Perpendicular + + + + + +
+
+
detail::tvec3<T> glm::gtx::orthonormalize::orthonormalize detail::tvec3<T> glm::orthonormalize ( const detail::tvec3< T > &  x,
+ + + + + +
+
+ +
+
+ +
+

GLM_GTX_perpendicular: Perpendicular

+
+
+ +

Perpendicular of a vector from other one. +More...

+ + + + +

+Functions

template<typename vecType >
vecType perp (vecType const &x, vecType const &Normal)
+

Detailed Description

+

Perpendicular of a vector from other one.

+

<glm/gtx/perpendicular.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
vecType glm::perp (vecType const & x,
vecType const & Normal 
)
+
+
+ +

Projects x a perpendicular axis of Normal.

+

From GLM_GTX_perpendicular extension.

+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00284.html b/doc/api-0.9.3/a00208.html similarity index 63% rename from doc/api-0.9.2/a00284.html rename to doc/api-0.9.3/a00208.html index 9a518126..845c3655 100644 --- a/doc/api-0.9.2/a00284.html +++ b/doc/api-0.9.3/a00208.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_polar_coordinates: Polar coordinates

+

Conversion from Euclidean space to polar space and revert. -More...

+More...

- + - +

Functions

template<typename T >
detail::tvec3< T > euclidean (const detail::tvec3< T > &polar)
detail::tvec3< T > euclidean (detail::tvec3< T > const &polar)
template<typename T >
detail::tvec3< T > polar (const detail::tvec3< T > &euclidean)
detail::tvec3< T > polar (detail::tvec3< T > const &euclidean)
-

Detailed Description

+

Detailed Description

Conversion from Euclidean space to polar space and revert.

-

<glm/gtx/polar_coordinates.hpp> need to be included to use these functionalities.

+

<glm/gtx/polar_coordinates.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + - + @@ -70,14 +70,14 @@ Functions - +
detail::tvec3<T> glm::gtx::polar_coordinates::euclidean detail::tvec3<T> glm::euclidean (const detail::tvec3< T > & detail::tvec3< T > const &  polar)
- + - + @@ -93,6 +93,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00209.html b/doc/api-0.9.3/a00209.html new file mode 100644 index 00000000..16a86500 --- /dev/null +++ b/doc/api-0.9.3/a00209.html @@ -0,0 +1,86 @@ + + + + +GLM_GTX_projection: Projection + + + + + +
+
+
detail::tvec3<T> glm::gtx::polar_coordinates::polar detail::tvec3<T> glm::polar (const detail::tvec3< T > & detail::tvec3< T > const &  euclidean)
+ + + + + +
+
+ +
+
+ +
+

GLM_GTX_projection: Projection

+
+
+ +

Projection of a vector to other one. +More...

+ + + + +

+Functions

template<typename vecType >
vecType proj (vecType const &x, vecType const &Normal)
+

Detailed Description

+

Projection of a vector to other one.

+

<glm/gtx/projection.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
vecType glm::proj (vecType const & x,
vecType const & Normal 
)
+
+
+ +

Projects x on Normal.

+

From GLM_GTX_projection extension.

+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00286.html b/doc/api-0.9.3/a00210.html similarity index 69% rename from doc/api-0.9.2/a00286.html rename to doc/api-0.9.3/a00210.html index 7bd9a08a..f14404e7 100644 --- a/doc/api-0.9.2/a00286.html +++ b/doc/api-0.9.3/a00210.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_quaternion: Extented quaternion types and functions

+

Extented quaternion types and functions. -More...

+More...

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Functions

template<typename valType >
valType angle (detail::tquat< valType > const &x)
valType angle (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)
detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)
template<typename valType >
detail::tquat< valType > angleAxis (valType const &angle, detail::tvec3< valType > const &axis)
detail::tquat< valType > angleAxis (valType const &angle, detail::tvec3< valType > const &axis)
template<typename valType >
detail::tvec3< valType > axis (detail::tquat< valType > const &x)
detail::tvec3< valType > axis (detail::tquat< valType > const &x)
template<typename valType >
detail::tvec3< valType > cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
detail::tvec3< valType > cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
template<typename valType >
detail::tvec3< valType > cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q)
detail::tvec3< valType > cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q)
template<typename valType >
detail::tvec3< valType > eulerAngles (detail::tquat< valType > const &x)
detail::tvec3< valType > eulerAngles (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > exp (detail::tquat< valType > const &q, valType const &exponent)
detail::tquat< valType > exp (detail::tquat< valType > const &q, valType const &exponent)
template<typename valType >
valType extractRealComponent (detail::tquat< valType > const &q)
valType extractRealComponent (detail::tquat< valType > const &q)
template<typename T >
detail::tquat< T > fastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
detail::tquat< T > fastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename valType >
detail::tquat< valType > intermediate (detail::tquat< valType > const &prev, detail::tquat< valType > const &curr, detail::tquat< valType > const &next)
detail::tquat< valType > intermediate (detail::tquat< valType > const &prev, detail::tquat< valType > const &curr, detail::tquat< valType > const &next)
template<typename valType >
detail::tquat< valType > log (detail::tquat< valType > const &q)
detail::tquat< valType > log (detail::tquat< valType > const &q)
template<typename valType >
valType pitch (detail::tquat< valType > const &x)
valType pitch (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > pow (detail::tquat< valType > const &x, valType const &y)
detail::tquat< valType > pow (detail::tquat< valType > const &x, valType const &y)
template<typename valType >
valType roll (detail::tquat< valType > const &x)
valType roll (detail::tquat< valType > const &x)
template<typename valType >
detail::tvec3< valType > rotate (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
detail::tvec3< valType > rotate (detail::tquat< valType > const &q, detail::tvec3< valType > const &v)
template<typename valType >
detail::tvec4< valType > rotate (detail::tquat< valType > const &q, detail::tvec4< valType > const &v)
detail::tvec4< valType > rotate (detail::tquat< valType > const &q, detail::tvec4< valType > const &v)
template<typename T >
detail::tquat< T > shortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
detail::tquat< T > shortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a)
template<typename valType >
detail::tquat< valType > squad (detail::tquat< valType > const &q1, detail::tquat< valType > const &q2, detail::tquat< valType > const &s1, detail::tquat< valType > const &s2, valType const &h)
detail::tquat< valType > squad (detail::tquat< valType > const &q1, detail::tquat< valType > const &q2, detail::tquat< valType > const &s1, detail::tquat< valType > const &s2, valType const &h)
template<typename valType >
detail::tmat3x3< valType > toMat3 (detail::tquat< valType > const &x)
detail::tmat3x3< valType > toMat3 (detail::tquat< valType > const &x)
template<typename valType >
detail::tmat4x4< valType > toMat4 (detail::tquat< valType > const &x)
detail::tmat4x4< valType > toMat4 (detail::tquat< valType > const &x)
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat4x4< valType > const &x)
detail::tquat< valType > toQuat (detail::tmat4x4< valType > const &x)
template<typename valType >
detail::tquat< valType > toQuat (detail::tmat3x3< valType > const &x)
detail::tquat< valType > toQuat (detail::tmat3x3< valType > const &x)
template<typename valType >
valType yaw (detail::tquat< valType > const &x)
valType yaw (detail::tquat< valType > const &x)
-

Detailed Description

+

Detailed Description

Extented quaternion types and functions.

-

<glm/gtx/quaternion.hpp> need to be included to use these functionalities.

+

<glm/gtx/quaternion.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -114,12 +114,12 @@ Functions - +
valType glm::gtx::quaternion::angle valType glm::angle ( detail::tquat< valType > const &  x)
- + @@ -156,12 +156,12 @@ Functions - +
detail::tquat<valType> glm::gtx::quaternion::angleAxis detail::tquat<valType> glm::angleAxis ( valType const &  angle,
- + @@ -186,12 +186,12 @@ Functions - +
detail::tquat<valType> glm::gtx::quaternion::angleAxis detail::tquat<valType> glm::angleAxis ( valType const &  angle,
- + @@ -206,12 +206,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::quaternion::axis detail::tvec3<valType> glm::axis ( detail::tquat< valType > const &  x)
- + @@ -236,12 +236,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::quaternion::cross detail::tvec3<valType> glm::cross ( detail::tquat< valType > const &  q,
- + @@ -266,12 +266,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::quaternion::cross detail::tvec3<valType> glm::cross ( detail::tvec3< valType > const &  v,
- + @@ -286,12 +286,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::quaternion::eulerAngles detail::tvec3<valType> glm::eulerAngles ( detail::tquat< valType > const &  x)
- + @@ -316,12 +316,12 @@ Functions - +
detail::tquat<valType> glm::gtx::quaternion::exp detail::tquat<valType> glm::exp ( detail::tquat< valType > const &  q,
- + @@ -336,12 +336,12 @@ Functions - +
valType glm::gtx::quaternion::extractRealComponent valType glm::extractRealComponent ( detail::tquat< valType > const &  q)
- + @@ -372,12 +372,12 @@ Functions - +
detail::tquat<T> glm::gtx::quaternion::fastMix detail::tquat<T> glm::fastMix ( detail::tquat< T > const &  x,
- + @@ -408,12 +408,12 @@ Functions - +
detail::tquat<valType> glm::gtx::quaternion::intermediate detail::tquat<valType> glm::intermediate ( detail::tquat< valType > const &  prev,
- + @@ -428,12 +428,12 @@ Functions - +
detail::tquat<valType> glm::gtx::quaternion::log detail::tquat<valType> glm::log ( detail::tquat< valType > const &  q)
- + @@ -448,12 +448,12 @@ Functions - +
valType glm::gtx::quaternion::pitch valType glm::pitch ( detail::tquat< valType > const &  x)
- + @@ -478,12 +478,12 @@ Functions - +
detail::tquat<valType> glm::gtx::quaternion::pow detail::tquat<valType> glm::pow ( detail::tquat< valType > const &  x,
- + @@ -498,12 +498,12 @@ Functions - +
valType glm::gtx::quaternion::roll valType glm::roll ( detail::tquat< valType > const &  x)
- + @@ -528,12 +528,12 @@ Functions - +
detail::tvec3<valType> glm::gtx::quaternion::rotate detail::tvec3<valType> glm::rotate ( detail::tquat< valType > const &  q,
- + @@ -558,12 +558,12 @@ Functions - +
detail::tvec4<valType> glm::gtx::quaternion::rotate detail::tvec4<valType> glm::rotate ( detail::tquat< valType > const &  q,
- + @@ -594,12 +594,12 @@ Functions - +
detail::tquat<T> glm::gtx::quaternion::shortMix detail::tquat<T> glm::shortMix ( detail::tquat< T > const &  x,
- + @@ -642,12 +642,12 @@ Functions - +
detail::tquat<valType> glm::gtx::quaternion::squad detail::tquat<valType> glm::squad ( detail::tquat< valType > const &  q1,
- + @@ -660,18 +660,18 @@ Functions

Converts a quaternion to a 3 * 3 matrix.

From GLM_GTX_quaternion extension.

-

Definition at line 171 of file gtx/quaternion.hpp.

+

Definition at line 189 of file gtx/quaternion.hpp.

-

References glm::gtc::quaternion::mat3_cast().

+

References glm::mat3_cast().

- +
detail::tmat3x3<valType> glm::gtx::quaternion::toMat3 detail::tmat3x3<valType> glm::toMat3 ( detail::tquat< valType > const &  x)
- + @@ -684,18 +684,18 @@ Functions

Converts a quaternion to a 4 * 4 matrix.

From GLM_GTX_quaternion extension.

-

Definition at line 177 of file gtx/quaternion.hpp.

+

Definition at line 195 of file gtx/quaternion.hpp.

-

References glm::gtc::quaternion::mat4_cast().

+

References glm::mat4_cast().

- +
detail::tmat4x4<valType> glm::gtx::quaternion::toMat4 detail::tmat4x4<valType> glm::toMat4 ( detail::tquat< valType > const &  x)
- + @@ -708,18 +708,18 @@ Functions

Converts a 4 * 4 matrix to a quaternion.

From GLM_GTX_quaternion extension.

-

Definition at line 189 of file gtx/quaternion.hpp.

+

Definition at line 207 of file gtx/quaternion.hpp.

-

References glm::gtc::quaternion::quat_cast().

+

References glm::quat_cast().

- +
detail::tquat<valType> glm::gtx::quaternion::toQuat detail::tquat<valType> glm::toQuat ( detail::tmat4x4< valType > const &  x)
- + @@ -732,18 +732,18 @@ Functions

Converts a 3 * 3 matrix to a quaternion.

From GLM_GTX_quaternion extension.

-

Definition at line 183 of file gtx/quaternion.hpp.

+

Definition at line 201 of file gtx/quaternion.hpp.

-

References glm::gtc::quaternion::quat_cast().

+

References glm::quat_cast().

- +
detail::tquat<valType> glm::gtx::quaternion::toQuat detail::tquat<valType> glm::toQuat ( detail::tmat3x3< valType > const &  x)
- + @@ -761,6 +761,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00287.html b/doc/api-0.9.3/a00211.html similarity index 56% rename from doc/api-0.9.2/a00287.html rename to doc/api-0.9.3/a00211.html index 05cc1967..3cfb46b9 100644 --- a/doc/api-0.9.2/a00287.html +++ b/doc/api-0.9.3/a00211.html @@ -7,13 +7,13 @@ - +
valType glm::gtx::quaternion::yaw valType glm::yaw ( detail::tquat< valType > const &  x)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_random: Random

+

Generate random number from various distribution methods. -More...

+More...

- - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - +

Functions

+
template<typename T >
compRand1 ()
+
compRand1 ()
template<typename T >
compRand1 (T Min, T Max)
+
compRand1 (T Min, T Max)
template<typename T >
detail::tvec2< T > compRand2 (T Min, T Max)
+
detail::tvec2< T > compRand2 (T Min, T Max)
template<typename T >
detail::tvec2< T > compRand2 (const detail::tvec2< T > &Min, const detail::tvec2< T > &Max)
+
detail::tvec2< T > compRand2 (const detail::tvec2< T > &Min, const detail::tvec2< T > &Max)
template<typename T >
detail::tvec3< T > compRand3 (T Min, T Max)
+
detail::tvec3< T > compRand3 (T Min, T Max)
template<typename T >
detail::tvec3< T > compRand3 (const detail::tvec3< T > &Min, const detail::tvec3< T > &Max)
+
detail::tvec3< T > compRand3 (const detail::tvec3< T > &Min, const detail::tvec3< T > &Max)
template<typename T >
detail::tvec3< T > compRand4 (const detail::tvec4< T > &Min, const detail::tvec4< T > &Max)
+
detail::tvec3< T > compRand4 (const detail::tvec4< T > &Min, const detail::tvec4< T > &Max)
template<typename T >
detail::tvec4< T > compRand4 (T Min, T Max)
+
detail::tvec4< T > compRand4 (T Min, T Max)
template<typename T >
gaussRand1 (T mean, T std_deviation)
+
gaussRand1 (T mean, T std_deviation)
template<typename T >
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, const detail::tvec2< T > &std_deviation)
+
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, const detail::tvec2< T > &std_deviation)
template<typename T >
detail::tvec2< T > gaussRand2 (T mean, T std_deviation)
+
detail::tvec2< T > gaussRand2 (T mean, T std_deviation)
template<typename T >
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, T std_deviation)
+
detail::tvec2< T > gaussRand2 (const detail::tvec2< T > &mean, T std_deviation)
template<typename T >
detail::tvec2< T > gaussRand2 (T mean, const detail::tvec2< T > &std_deviation)
+
detail::tvec2< T > gaussRand2 (T mean, const detail::tvec2< T > &std_deviation)
template<typename T >
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, const detail::tvec3< T > &std_deviation)
+
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, const detail::tvec3< T > &std_deviation)
template<typename T >
detail::tvec3< T > gaussRand3 (T mean, T std_deviation)
+
detail::tvec3< T > gaussRand3 (T mean, T std_deviation)
template<typename T >
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, T std_deviation)
+
detail::tvec3< T > gaussRand3 (const detail::tvec3< T > &mean, T std_deviation)
template<typename T >
detail::tvec3< T > gaussRand3 (T mean, const detail::tvec3< T > &std_deviation)
+
detail::tvec3< T > gaussRand3 (T mean, const detail::tvec3< T > &std_deviation)
template<typename T >
detail::tvec4< T > gaussRand4 (T mean, T std_deviation)
+
detail::tvec4< T > gaussRand4 (T mean, T std_deviation)
template<typename T >
detail::tvec4< T > gaussRand4 (T mean, const detail::tvec4< T > &std_deviation)
+
detail::tvec4< T > gaussRand4 (T mean, const detail::tvec4< T > &std_deviation)
template<typename T >
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, const detail::tvec4< T > &std_deviation)
+
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, const detail::tvec4< T > &std_deviation)
template<typename T >
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, T std_deviation)
+
detail::tvec4< T > gaussRand4 (const detail::tvec4< T > &mean, T std_deviation)
template<typename T >
detail::tvec2< T > normalizedRand2 ()
+
detail::tvec2< T > normalizedRand2 ()
template<typename T >
detail::tvec2< T > normalizedRand2 (T Min, T Max)
+
detail::tvec2< T > normalizedRand2 (T Min, T Max)
template<typename T >
detail::tvec3< T > normalizedRand3 (T Min, T Max)
+
detail::tvec3< T > normalizedRand3 (T Min, T Max)
template<typename T >
detail::tvec3< T > normalizedRand3 ()
detail::tvec3< T > normalizedRand3 ()
template<typename T >
signedRand1 ()
+
signedRand1 ()
template<typename T >
detail::tvec2< T > signedRand2 ()
+
detail::tvec2< T > signedRand2 ()
template<typename T >
detail::tvec3< T > signedRand3 ()
+
detail::tvec3< T > signedRand3 ()
template<typename T >
detail::tvec4< T > signedRand4 ()
+
detail::tvec4< T > signedRand4 ()
template<typename T >
detail::tvec2< T > vecRand2 ()
+
detail::tvec2< T > vecRand2 ()
template<typename T >
detail::tvec2< T > vecRand2 (T MinRadius, T MaxRadius)
+
detail::tvec2< T > vecRand2 (T MinRadius, T MaxRadius)
template<typename T >
detail::tvec3< T > vecRand3 ()
+
detail::tvec3< T > vecRand3 ()
template<typename T >
detail::tvec3< T > vecRand3 (T MinRadius, T MaxRadius)
+
detail::tvec3< T > vecRand3 (T MinRadius, T MaxRadius)
template<typename T >
detail::tvec4< T > vecRand4 (T MinRadius, T MaxRadius)
+
detail::tvec4< T > vecRand4 (T MinRadius, T MaxRadius)
template<typename T >
detail::tvec4< T > vecRand4 ()
detail::tvec4< T > vecRand4 ()
-

Detailed Description

+

Detailed Description

Generate random number from various distribution methods.

-

<glm/gtx/random.hpp> need to be included to use these functionalities.

+

<glm/gtx/random.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -172,6 +172,6 @@ template<typename T > +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00288.html b/doc/api-0.9.3/a00212.html similarity index 66% rename from doc/api-0.9.2/a00288.html rename to doc/api-0.9.3/a00212.html index 22cad9c0..d56cac8f 100644 --- a/doc/api-0.9.2/a00288.html +++ b/doc/api-0.9.3/a00212.html @@ -7,13 +7,13 @@ - +
T glm::gtx::random::signedRand1 T glm::signedRand1 ( )
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_raw_data: Raw data

+

Projection of a vector to other one. -More...

+More...

- - - - + + + +

Typedefs

typedef uint8 byte
typedef uint32 dword
typedef uint64 qword
typedef uint16 word
typedef uint8 byte
typedef uint32 dword
typedef uint64 qword
typedef uint16 word
-

Detailed Description

+

Detailed Description

Projection of a vector to other one.

-

<glm/gtx/raw_data.hpp> need to be included to use these functionalities.

+

<glm/gtx/raw_data.hpp> need to be included to use these functionalities.


Typedef Documentation

- +
@@ -64,11 +64,11 @@ Typedefs

Type for byte numbers.

From GLM_GTX_raw_data extension.

-

Definition at line 35 of file raw_data.hpp.

+

Definition at line 56 of file raw_data.hpp.

- +
@@ -82,11 +82,11 @@ Typedefs

Type for dword numbers.

From GLM_GTX_raw_data extension.

-

Definition at line 43 of file raw_data.hpp.

+

Definition at line 64 of file raw_data.hpp.

- +
@@ -100,11 +100,11 @@ Typedefs

Type for qword numbers.

From GLM_GTX_raw_data extension.

-

Definition at line 47 of file raw_data.hpp.

+

Definition at line 68 of file raw_data.hpp.

- +
@@ -118,13 +118,13 @@ Typedefs

Type for word numbers.

From GLM_GTX_raw_data extension.

-

Definition at line 39 of file raw_data.hpp.

+

Definition at line 60 of file raw_data.hpp.

+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00289.html b/doc/api-0.9.3/a00213.html similarity index 68% rename from doc/api-0.9.2/a00289.html rename to doc/api-0.9.3/a00213.html index a8a1ea22..648d213f 100644 --- a/doc/api-0.9.2/a00289.html +++ b/doc/api-0.9.3/a00213.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_reciprocal: Reciprocal

+

Define secant, cosecant and cotangent functions. -More...

+More...

- + - + - + - + - + - + - + - + - + - + - + - +

Functions

template<typename genType >
genType acot (genType const &x)
genType acot (genType const &x)
template<typename genType >
genType acoth (genType const &x)
genType acoth (genType const &x)
template<typename genType >
genType acsc (genType const &x)
genType acsc (genType const &x)
template<typename genType >
genType acsch (genType const &x)
genType acsch (genType const &x)
template<typename genType >
genType asec (genType const &x)
genType asec (genType const &x)
template<typename genType >
genType asech (genType const &x)
genType asech (genType const &x)
template<typename genType >
genType cot (genType const &angle)
genType cot (genType const &angle)
template<typename genType >
genType coth (genType const &angle)
genType coth (genType const &angle)
template<typename genType >
genType csc (genType const &angle)
genType csc (genType const &angle)
template<typename genType >
genType csch (genType const &angle)
genType csch (genType const &angle)
template<typename genType >
genType sec (genType const &angle)
genType sec (genType const &angle)
template<typename genType >
genType sech (genType const &angle)
genType sech (genType const &angle)
-

Detailed Description

+

Detailed Description

Define secant, cosecant and cotangent functions.

-

<glm/gtx/reciprocal.hpp> need to be included to use these functionalities.

+

<glm/gtx/reciprocal.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -90,12 +90,12 @@ Functions - +
genType glm::gtx::reciprocal::acot genType glm::acot ( genType const &  x)
- + @@ -110,12 +110,12 @@ Functions - +
genType glm::gtx::reciprocal::acoth genType glm::acoth ( genType const &  x)
- + @@ -130,12 +130,12 @@ Functions - +
genType glm::gtx::reciprocal::acsc genType glm::acsc ( genType const &  x)
- + @@ -150,12 +150,12 @@ Functions - +
genType glm::gtx::reciprocal::acsch genType glm::acsch ( genType const &  x)
- + @@ -170,12 +170,12 @@ Functions - +
genType glm::gtx::reciprocal::asec genType glm::asec ( genType const &  x)
- + @@ -190,12 +190,12 @@ Functions - +
genType glm::gtx::reciprocal::asech genType glm::asech ( genType const &  x)
- + @@ -210,12 +210,12 @@ Functions - +
genType glm::gtx::reciprocal::cot genType glm::cot ( genType const &  angle)
- + @@ -230,12 +230,12 @@ Functions - +
genType glm::gtx::reciprocal::coth genType glm::coth ( genType const &  angle)
- + @@ -250,12 +250,12 @@ Functions - +
genType glm::gtx::reciprocal::csc genType glm::csc ( genType const &  angle)
- + @@ -270,12 +270,12 @@ Functions - +
genType glm::gtx::reciprocal::csch genType glm::csch ( genType const &  angle)
- + @@ -290,12 +290,12 @@ Functions - +
genType glm::gtx::reciprocal::sec genType glm::sec ( genType const &  angle)
- + @@ -313,6 +313,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00290.html b/doc/api-0.9.3/a00214.html similarity index 69% rename from doc/api-0.9.2/a00290.html rename to doc/api-0.9.3/a00214.html index 8a0f2556..6051ca0d 100644 --- a/doc/api-0.9.2/a00290.html +++ b/doc/api-0.9.3/a00214.html @@ -7,13 +7,13 @@ - +
genType glm::gtx::reciprocal::sech genType glm::sech ( genType const &  angle)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_rotate_vector: Rotate vector

+

Function to directly rotate a vector. -More...

+More...

- + - + - + - + - + - + - + - + - + - +

Functions

template<typename T >
detail::tmat4x4< T > orientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up)
detail::tmat4x4< T > orientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up)
template<typename T >
detail::tvec2< T > rotate (detail::tvec2< T > const &v, T const &angle)
detail::tvec2< T > rotate (detail::tvec2< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal)
detail::tvec3< T > rotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal)
template<typename T >
detail::tvec4< T > rotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal)
detail::tvec4< T > rotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal)
template<typename T >
detail::tvec3< T > rotateX (detail::tvec3< T > const &v, T const &angle)
detail::tvec3< T > rotateX (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateX (detail::tvec4< T > const &v, T const &angle)
detail::tvec4< T > rotateX (detail::tvec4< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotateY (detail::tvec3< T > const &v, T const &angle)
detail::tvec3< T > rotateY (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateY (detail::tvec4< T > const &v, T const &angle)
detail::tvec4< T > rotateY (detail::tvec4< T > const &v, T const &angle)
template<typename T >
detail::tvec3< T > rotateZ (detail::tvec3< T > const &v, T const &angle)
detail::tvec3< T > rotateZ (detail::tvec3< T > const &v, T const &angle)
template<typename T >
detail::tvec4< T > rotateZ (detail::tvec4< T > const &v, T const &angle)
detail::tvec4< T > rotateZ (detail::tvec4< T > const &v, T const &angle)
-

Detailed Description

+

Detailed Description

Function to directly rotate a vector.

-

<glm/gtx/rotate_vector.hpp> need to be included to use these functionalities.

+

<glm/gtx/rotate_vector.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -96,12 +96,12 @@ Functions - +
detail::tmat4x4<T> glm::gtx::rotate_vector::orientation detail::tmat4x4<T> glm::orientation ( detail::tvec3< T > const &  Normal,
- + @@ -126,12 +126,12 @@ Functions - +
detail::tvec2<T> glm::gtx::rotate_vector::rotate detail::tvec2<T> glm::rotate ( detail::tvec2< T > const &  v,
- + @@ -162,12 +162,12 @@ Functions - +
detail::tvec3<T> glm::gtx::rotate_vector::rotate detail::tvec3<T> glm::rotate ( detail::tvec3< T > const &  v,
- + @@ -198,12 +198,12 @@ Functions - +
detail::tvec4<T> glm::gtx::rotate_vector::rotate detail::tvec4<T> glm::rotate ( detail::tvec4< T > const &  v,
- + @@ -228,12 +228,12 @@ Functions - +
detail::tvec3<T> glm::gtx::rotate_vector::rotateX detail::tvec3<T> glm::rotateX ( detail::tvec3< T > const &  v,
- + @@ -258,12 +258,12 @@ Functions - +
detail::tvec4<T> glm::gtx::rotate_vector::rotateX detail::tvec4<T> glm::rotateX ( detail::tvec4< T > const &  v,
- + @@ -288,12 +288,12 @@ Functions - +
detail::tvec3<T> glm::gtx::rotate_vector::rotateY detail::tvec3<T> glm::rotateY ( detail::tvec3< T > const &  v,
- + @@ -318,12 +318,12 @@ Functions - +
detail::tvec4<T> glm::gtx::rotate_vector::rotateY detail::tvec4<T> glm::rotateY ( detail::tvec4< T > const &  v,
- + @@ -348,12 +348,12 @@ Functions - +
detail::tvec3<T> glm::gtx::rotate_vector::rotateZ detail::tvec3<T> glm::rotateZ ( detail::tvec3< T > const &  v,
- + @@ -381,6 +381,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00215.html b/doc/api-0.9.3/a00215.html new file mode 100644 index 00000000..3b9678ba --- /dev/null +++ b/doc/api-0.9.3/a00215.html @@ -0,0 +1,48 @@ + + + + +GLM_GTX_simd_mat4: SIMD mat4 type and functions + + + + + +
+
+
detail::tvec4<T> glm::gtx::rotate_vector::rotateZ detail::tvec4<T> glm::rotateZ ( detail::tvec4< T > const &  v,
+ + + + + +
+
+ +
+
+
+

GLM_GTX_simd_mat4: SIMD mat4 type and functions

+
+
+ +

SIMD implementation of mat4 type. +More...

+ +
+

SIMD implementation of mat4 type.

+

<glm/gtx/simd_mat4.hpp> need to be included to use these functionalities.

+
+ + + diff --git a/doc/api-0.9.3/a00216.html b/doc/api-0.9.3/a00216.html new file mode 100644 index 00000000..23fe9203 --- /dev/null +++ b/doc/api-0.9.3/a00216.html @@ -0,0 +1,48 @@ + + + + +GLM_GTX_simd_vec4: SIMD vec4 type and functions + + + + + +
+
+ + + + + + +
+
+ +
+
+
+

GLM_GTX_simd_vec4: SIMD vec4 type and functions

+
+
+ +

SIMD implementation of vec4 type. +More...

+ +
+

SIMD implementation of vec4 type.

+

<glm/gtx/simd_vec4.hpp> need to be included to use these functionalities.

+
+ + + diff --git a/doc/api-0.9.2/a00293.html b/doc/api-0.9.3/a00217.html similarity index 77% rename from doc/api-0.9.2/a00293.html rename to doc/api-0.9.3/a00217.html index f5ee56ad..c811601c 100644 --- a/doc/api-0.9.2/a00293.html +++ b/doc/api-0.9.3/a00217.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_spline: Spline

+

Spline functions. -More...

+More...

- + - + - +

Functions

template<typename genType >
genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
template<typename genType >
genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
template<typename genType >
genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
-

Detailed Description

+

Detailed Description

Spline functions.

-

<glm/gtx/spline.hpp> need to be included to use these functionalities.

+

<glm/gtx/spline.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -100,12 +100,12 @@ Functions - +
genType catmullRom genType glm::catmullRom ( genType const &  v1,
- + @@ -148,12 +148,12 @@ Functions - +
genType cubic genType glm::cubic ( genType const &  v1,
- + @@ -199,6 +199,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00218.html b/doc/api-0.9.3/a00218.html new file mode 100644 index 00000000..b442c769 --- /dev/null +++ b/doc/api-0.9.3/a00218.html @@ -0,0 +1,174 @@ + + + + +GLM_GTX_std_based_type: Add types based on STL + + + + + +
+
+
genType hermite genType glm::hermite ( genType const &  v1,
+ + + + + +
+
+ +
+
+ +
+

GLM_GTX_std_based_type: Add types based on STL

+
+
+ +

Adds vector types based on STL value types. +More...

+ + + + + + + + +

+Typedefs

typedef detail::tvec2
+< std::size_t > 
size2
typedef detail::tvec2
+< std::size_t > 
size2_t
typedef detail::tvec3
+< std::size_t > 
size3
typedef detail::tvec3
+< std::size_t > 
size3_t
typedef detail::tvec4
+< std::size_t > 
size4
typedef detail::tvec4
+< std::size_t > 
size4_t
+

Detailed Description

+

Adds vector types based on STL value types.

+

<glm/gtx/std_based_type.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef detail::tvec2<std::size_t> size2
+
+
+ +

Vector type based of two std::size_t components.

+
See also:
- GLM_GTX_std_based_type
+ +

Definition at line 56 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::tvec2<std::size_t> size2_t
+
+
+ +

Vector type based of two std::size_t components.

+
See also:
- GLM_GTX_std_based_type
+ +

Definition at line 68 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::tvec3<std::size_t> size3
+
+
+ +

Vector type based of three std::size_t components.

+
See also:
- GLM_GTX_std_based_type
+ +

Definition at line 60 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::tvec3<std::size_t> size3_t
+
+
+ +

Vector type based of three std::size_t components.

+
See also:
- GLM_GTX_std_based_type
+ +

Definition at line 72 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::tvec4<std::size_t> size4
+
+
+ +

Vector type based of four std::size_t components.

+
See also:
- GLM_GTX_std_based_type
+ +

Definition at line 64 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::tvec4<std::size_t> size4_t
+
+
+ +

Vector type based of four std::size_t components.

+
See also:
- GLM_GTX_std_based_type
+ +

Definition at line 76 of file std_based_type.hpp.

+ +
+
+
+ + + diff --git a/doc/api-0.9.2/a00294.html b/doc/api-0.9.3/a00219.html similarity index 68% rename from doc/api-0.9.2/a00294.html rename to doc/api-0.9.3/a00219.html index 0f7a0c99..4b3b846e 100644 --- a/doc/api-0.9.2/a00294.html +++ b/doc/api-0.9.3/a00219.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_string_cast: String cast

+

Setup strings for GLM type values. -More...

+More...

- +

Functions

template<typename genType >
std::string to_string (genType const &x)
std::string to_string (genType const &x)
-

Detailed Description

+

Detailed Description

Setup strings for GLM type values.

-

<glm/gtx/string_cast.hpp> need to be included to use these functionalities.

+

<glm/gtx/string_cast.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -71,6 +71,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00295.html b/doc/api-0.9.3/a00220.html similarity index 68% rename from doc/api-0.9.2/a00295.html rename to doc/api-0.9.3/a00220.html index 03c170ae..ccf2351e 100644 --- a/doc/api-0.9.2/a00295.html +++ b/doc/api-0.9.3/a00220.html @@ -7,13 +7,13 @@ - +
std::string glm::gtx::string_cast::to_string std::string glm::to_string ( genType const &  x)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_transform: Extented transformation matrices

+

Add transformation matrices. -More...

+More...

- + - + - + - + - + - + - + - + - +

Functions

template<typename T >
detail::tmat4x4< T > rotate (T angle, T x, T y, T z)
detail::tmat4x4< T > rotate (T angle, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > rotate (T angle, detail::tvec3< T > const &v)
detail::tmat4x4< T > rotate (T angle, detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z)
detail::tmat4x4< T > rotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > scale (detail::tvec3< T > const &v)
detail::tmat4x4< T > scale (detail::tvec3< T > const &v)
template<typename T >
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, T x, T y, T z)
detail::tmat4x4< T > scale (detail::tmat4x4< T > const &m, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > scale (T x, T y, T z)
detail::tmat4x4< T > scale (T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, T x, T y, T z)
detail::tmat4x4< T > translate (detail::tmat4x4< T > const &m, T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (T x, T y, T z)
detail::tmat4x4< T > translate (T x, T y, T z)
template<typename T >
detail::tmat4x4< T > translate (detail::tvec3< T > const &v)
detail::tmat4x4< T > translate (detail::tvec3< T > const &v)
-

Detailed Description

+

Detailed Description

Add transformation matrices.

-

<glm/gtx/transform.hpp> need to be included to use these functionalities.

+

<glm/gtx/transform.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -102,16 +102,18 @@ Functions

Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::rotate detail::tmat4x4<T> glm::rotate ( angle,
- + @@ -132,16 +134,18 @@ Functions

Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::rotate detail::tmat4x4<T> glm::rotate ( angle,
- + @@ -180,16 +184,18 @@ Functions

Transforms a matrix with a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::rotate detail::tmat4x4<T> glm::rotate ( detail::tmat4x4< T > const &  m,
- + @@ -200,16 +206,18 @@ Functions

Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::scale detail::tmat4x4<T> glm::scale ( detail::tvec3< T > const &  v)
- + @@ -242,16 +250,18 @@ Functions

Transforms a matrix with a scale 4 * 4 matrix created from 3 scalars.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::scale detail::tmat4x4<T> glm::scale ( detail::tmat4x4< T > const &  m,
- + @@ -278,16 +288,18 @@ Functions

Builds a scale 4 * 4 matrix created from 3 scalars.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::scale detail::tmat4x4<T> glm::scale ( x,
- + @@ -320,16 +332,18 @@ Functions

Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::translate detail::tmat4x4<T> glm::translate ( detail::tmat4x4< T > const &  m,
- + @@ -356,16 +370,18 @@ Functions

Builds a translation 4 * 4 matrix created from 3 scalars.

-

From GLM_GTX_transform extension.

+
- +
detail::tmat4x4<T> glm::gtx::transform::translate detail::tmat4x4<T> glm::translate ( x,
- + @@ -376,13 +392,15 @@ Functions

Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.

-

From GLM_GTX_transform extension.

+
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00296.html b/doc/api-0.9.3/a00221.html similarity index 70% rename from doc/api-0.9.2/a00296.html rename to doc/api-0.9.3/a00221.html index c5aa2397..6dfa1db8 100644 --- a/doc/api-0.9.2/a00296.html +++ b/doc/api-0.9.3/a00221.html @@ -7,13 +7,13 @@ - +
detail::tmat4x4<T> glm::gtx::transform::translate detail::tmat4x4<T> glm::translate ( detail::tvec3< T > const &  v)
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_transform2: Extra transformation matrices

+

Add extra transformation matrices. -More...

+More...

- + - + - + - + - + - + - + - + - +

Functions

template<typename T >
detail::tmat3x3< T > proj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal)
detail::tmat3x3< T > proj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal)
template<typename T >
detail::tmat4x4< T > proj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal)
detail::tmat4x4< T > proj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal)
template<typename valType >
detail::tmat4x4< valType > scaleBias (valType scale, valType bias)
detail::tmat4x4< valType > scaleBias (valType scale, valType bias)
template<typename valType >
detail::tmat4x4< valType > scaleBias (detail::tmat4x4< valType > const &m, valType scale, valType bias)
detail::tmat4x4< valType > scaleBias (detail::tmat4x4< valType > const &m, valType scale, valType bias)
template<typename T >
detail::tmat3x3< T > shearX2D (detail::tmat3x3< T > const &m, T y)
detail::tmat3x3< T > shearX2D (detail::tmat3x3< T > const &m, T y)
template<typename T >
detail::tmat4x4< T > shearX3D (const detail::tmat4x4< T > &m, T y, T z)
detail::tmat4x4< T > shearX3D (const detail::tmat4x4< T > &m, T y, T z)
template<typename T >
detail::tmat3x3< T > shearY2D (detail::tmat3x3< T > const &m, T x)
detail::tmat3x3< T > shearY2D (detail::tmat3x3< T > const &m, T x)
template<typename T >
detail::tmat4x4< T > shearY3D (const detail::tmat4x4< T > &m, T x, T z)
detail::tmat4x4< T > shearY3D (const detail::tmat4x4< T > &m, T x, T z)
template<typename T >
detail::tmat4x4< T > shearZ3D (const detail::tmat4x4< T > &m, T x, T y)
detail::tmat4x4< T > shearZ3D (const detail::tmat4x4< T > &m, T x, T y)
-

Detailed Description

+

Detailed Description

Add extra transformation matrices.

-

<glm/gtx/transform2.hpp> need to be included to use these functionalities.

+

<glm/gtx/transform2.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -94,12 +94,12 @@ Functions - +
detail::tmat3x3<T> glm::gtx::transform2::proj2D detail::tmat3x3<T> glm::proj2D ( const detail::tmat3x3< T > &  m,
- + @@ -124,12 +124,12 @@ Functions - +
detail::tmat4x4<T> glm::gtx::transform2::proj3D detail::tmat4x4<T> glm::proj3D ( const detail::tmat4x4< T > &  m,
- + @@ -154,12 +154,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::transform2::scaleBias detail::tmat4x4<valType> glm::scaleBias ( valType  scale,
- + @@ -190,12 +190,12 @@ Functions - +
detail::tmat4x4<valType> glm::gtx::transform2::scaleBias detail::tmat4x4<valType> glm::scaleBias ( detail::tmat4x4< valType > const &  m,
- + @@ -220,12 +220,12 @@ Functions - +
detail::tmat3x3<T> glm::gtx::transform2::shearX2D detail::tmat3x3<T> glm::shearX2D ( detail::tmat3x3< T > const &  m,
- + @@ -255,12 +255,12 @@ Functions - +
detail::tmat4x4<T> glm::gtx::transform2::shearX3D detail::tmat4x4<T> glm::shearX3D ( const detail::tmat4x4< T > &  m,
- + @@ -285,12 +285,12 @@ Functions - +
detail::tmat3x3<T> glm::gtx::transform2::shearY2D detail::tmat3x3<T> glm::shearY2D ( detail::tmat3x3< T > const &  m,
- + @@ -321,12 +321,12 @@ Functions - +
detail::tmat4x4<T> glm::gtx::transform2::shearY3D detail::tmat4x4<T> glm::shearY3D ( const detail::tmat4x4< T > &  m,
- + @@ -360,6 +360,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00308.html b/doc/api-0.9.3/a00222.html similarity index 69% rename from doc/api-0.9.2/a00308.html rename to doc/api-0.9.3/a00222.html index e95c4625..ce3e066c 100644 --- a/doc/api-0.9.2/a00308.html +++ b/doc/api-0.9.3/a00222.html @@ -2,18 +2,18 @@ -Gtx_ulp +GLM_GTX_ulp: Accuracy measurement - +
detail::tmat4x4<T> glm::gtx::transform2::shearZ3D detail::tmat4x4<T> glm::shearZ3D ( const detail::tmat4x4< T > &  m,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_ulp: Accuracy measurement

+
+ +

Allow the measurement of the accuracy of a function against a reference implementation. +More...

- + - + - + - + - + - +

Functions

template<typename T >
uint float_distance (T const &x, T const &y)
uint float_distance (T const &x, T const &y)
template<typename T , template< typename > class vecType>
vecType< uint > float_distance (vecType< T > const &x, vecType< T > const &y)
vecType< uint > float_distance (vecType< T > const &x, vecType< T > const &y)
template<typename genType >
genType next_float (genType const &x)
genType next_float (genType const &x)
template<typename genType >
genType next_float (genType const &x, uint const &Distance)
genType next_float (genType const &x, uint const &Distance)
template<typename genType >
genType prev_float (genType const &x, uint const &Distance)
genType prev_float (genType const &x, uint const &Distance)
template<typename genType >
genType prev_float (genType const &x)
genType prev_float (genType const &x)
+

Detailed Description

+

Allow the measurement of the accuracy of a function against a reference implementation.

+

This extension works on floating-point data and provide results in ULP. <glm/gtx/ulp.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -82,12 +88,12 @@ Functions - +
uint glm::gtx::ulp::float_distance uint glm::float_distance ( T const &  x,
- + @@ -112,12 +118,12 @@ Functions - +
vecType<uint> glm::gtx::ulp::float_distance vecType<uint> glm::float_distance ( vecType< T > const &  x,
- + @@ -132,12 +138,12 @@ Functions - +
genType glm::gtx::ulp::next_float genType glm::next_float ( genType const &  x)
- + @@ -162,12 +168,12 @@ Functions - +
genType glm::gtx::ulp::next_float genType glm::next_float ( genType const &  x,
- + @@ -192,12 +198,12 @@ Functions - +
genType glm::gtx::ulp::prev_float genType glm::prev_float ( genType const &  x,
- + @@ -215,6 +221,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00223.html b/doc/api-0.9.3/a00223.html new file mode 100644 index 00000000..1084e923 --- /dev/null +++ b/doc/api-0.9.3/a00223.html @@ -0,0 +1,48 @@ + + + + +GLM_GTX_vec1: Add vec1 types + + + + + +
+
+
genType glm::gtx::ulp::prev_float genType glm::prev_float ( genType const &  x)
+ + + + + +
+
+ +
+
+
+

GLM_GTX_vec1: Add vec1 types

+
+
+ +

Add vec1, ivec1, uvec1 and bvec1 types. +More...

+ +
+

Add vec1, ivec1, uvec1 and bvec1 types.

+

<glm/gtx/vec1.hpp> need to be included to use these functionalities.

+
+ + + diff --git a/doc/api-0.9.2/a00298.html b/doc/api-0.9.3/a00224.html similarity index 75% rename from doc/api-0.9.2/a00298.html rename to doc/api-0.9.3/a00224.html index 439d5bc7..4868ec32 100644 --- a/doc/api-0.9.2/a00298.html +++ b/doc/api-0.9.3/a00224.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_vector_access: Vector access

+

Function to set values to vectors. -More...

+More...

- + - + - +

Functions

template<typename valType >
void set (detail::tvec2< valType > &v, valType const &x, valType const &y)
void set (detail::tvec2< valType > &v, valType const &x, valType const &y)
template<typename valType >
void set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w)
void set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w)
template<typename valType >
void set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z)
void set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z)
-

Detailed Description

+

Detailed Description

Function to set values to vectors.

-

<glm/gtx/vector_access.hpp> need to be included to use these functionalities.

+

<glm/gtx/vector_access.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -88,12 +88,12 @@ Functions - +
void glm::gtx::vector_access::set void glm::set ( detail::tvec2< valType > &  v,
- + @@ -136,12 +136,12 @@ Functions - +
void glm::gtx::vector_access::set void glm::set ( detail::tvec4< valType > &  v,
- + @@ -181,6 +181,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00299.html b/doc/api-0.9.3/a00225.html similarity index 71% rename from doc/api-0.9.2/a00299.html rename to doc/api-0.9.3/a00225.html index 04ca13ec..89872c5d 100644 --- a/doc/api-0.9.2/a00299.html +++ b/doc/api-0.9.3/a00225.html @@ -7,13 +7,13 @@ - +
void glm::gtx::vector_access::set void glm::set ( detail::tvec3< valType > &  v,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_vector_angle: Vector angle

+

Compute angle between vectors. -More...

+More...

+vecType::value_type  - + - +

Functions

template<typename vecType >
GLM_FUNC_QUALIFIER
-vecType::value_type 
angle (vecType const &x, vecType const &y)
angle (vecType const &x, vecType const &y)
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > const &ref)
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > const &ref)
template<typename T >
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec2< T > const &x, detail::tvec2< T > const &y)
GLM_FUNC_QUALIFIER T orientedAngle (detail::tvec2< T > const &x, detail::tvec2< T > const &y)
-

Detailed Description

+

Detailed Description

Compute angle between vectors.

-

<glm/gtx/vector_angle.hpp> need to be included to use these functionalities.

+

<glm/gtx/vector_angle.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -83,12 +83,12 @@ vecType::value_type 
GLM_FUNC_QUALIFIER vecType::value_type glm::gtx::vector_angle::angle GLM_FUNC_QUALIFIER vecType::value_type glm::angle ( vecType const &  x, - +
- + @@ -119,12 +119,12 @@ vecType::value_type 
GLM_FUNC_QUALIFIER T glm::gtx::vector_angle::orientedAngle GLM_FUNC_QUALIFIER T glm::orientedAngle ( detail::tvec3< T > const &  x, - +
- + @@ -152,6 +152,6 @@ vecType::value_type 
GLM_FUNC_QUALIFIER T glm::gtx::vector_angle::orientedAngle GLM_FUNC_QUALIFIER T glm::orientedAngle ( detail::tvec2< T > const &  x, +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00300.html b/doc/api-0.9.3/a00226.html similarity index 73% rename from doc/api-0.9.2/a00300.html rename to doc/api-0.9.3/a00226.html index 3ecf8c74..fccf4f3c 100644 --- a/doc/api-0.9.2/a00300.html +++ b/doc/api-0.9.3/a00226.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_vector_query: Vector query

+

Query informations of vector types. -More...

+More...

- + - + - + - + - + - + - +

Functions

template<typename genType >
bool areCollinear (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areCollinear (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areOpposite (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areOpposite (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool areSimilar (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool areSimilar (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool isNormalized (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool isNormalized (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
template<typename genType >
bool isNull (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
bool isNull (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon())
-

Detailed Description

+

Detailed Description

Query informations of vector types.

-

<glm/gtx/vector_query.hpp> need to be included to use these functionalities.

+

<glm/gtx/vector_query.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -96,12 +96,12 @@ Functions - +
bool glm::gtx::vector_query::areCollinear bool glm::areCollinear ( genType const &  v0,
- + @@ -132,12 +132,12 @@ Functions - +
bool glm::gtx::vector_query::areOpposite bool glm::areOpposite ( genType const &  v0,
- + @@ -168,12 +168,12 @@ Functions - +
bool glm::gtx::vector_query::areOrthogonal bool glm::areOrthogonal ( genType const &  v0,
- + @@ -204,12 +204,12 @@ Functions - +
bool glm::gtx::vector_query::areOrthonormal bool glm::areOrthonormal ( genType const &  v0,
- + @@ -240,12 +240,12 @@ Functions - +
bool glm::gtx::vector_query::areSimilar bool glm::areSimilar ( genType const &  v0,
- + @@ -270,12 +270,12 @@ Functions - +
bool glm::gtx::vector_query::isNormalized bool glm::isNormalized ( genType const &  v,
- + @@ -303,6 +303,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00301.html b/doc/api-0.9.3/a00227.html similarity index 73% rename from doc/api-0.9.2/a00301.html rename to doc/api-0.9.3/a00227.html index c2f3b02f..1e3547a1 100644 --- a/doc/api-0.9.2/a00301.html +++ b/doc/api-0.9.3/a00227.html @@ -7,13 +7,13 @@ - +
bool glm::gtx::vector_query::isNull bool glm::isNull ( genType const &  v,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_verbose_operator: Verbose operator

+

Use words to replace operators. -More...

+More...

- + - + - + - + - +

Functions

template<typename genTypeT , typename genTypeU >
genTypeT add (genTypeT const &a, genTypeU const &b)
genTypeT add (genTypeT const &a, genTypeU const &b)
template<typename genTypeT , typename genTypeU >
genTypeT div (genTypeT const &a, genTypeU const &b)
genTypeT div (genTypeT const &a, genTypeU const &b)
template<typename genTypeT , typename genTypeU , typename genTypeV >
genTypeT mad (genTypeT const &a, genTypeU const &b, genTypeV const &c)
genTypeT mad (genTypeT const &a, genTypeU const &b, genTypeV const &c)
template<typename genTypeT , typename genTypeU >
genTypeT mul (genTypeT const &a, genTypeU const &b)
genTypeT mul (genTypeT const &a, genTypeU const &b)
template<typename genTypeT , typename genTypeU >
genTypeT sub (genTypeT const &a, genTypeU const &b)
genTypeT sub (genTypeT const &a, genTypeU const &b)
-

Detailed Description

+

Detailed Description

Use words to replace operators.

-

<glm/gtx/verbose_operator.hpp> need to be included to use these functionalities.

+

<glm/gtx/verbose_operator.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -85,12 +85,12 @@ Functions - +
genTypeT glm::gtx::verbose_operator::add genTypeT glm::add ( genTypeT const &  a,
- + @@ -114,12 +114,12 @@ Functions - +
genTypeT glm::gtx::verbose_operator::div genTypeT glm::div ( genTypeT const &  a,
- + @@ -149,12 +149,12 @@ Functions - +
genTypeT glm::gtx::verbose_operator::mad genTypeT glm::mad ( genTypeT const &  a,
- + @@ -178,12 +178,12 @@ Functions - +
genTypeT glm::gtx::verbose_operator::mul genTypeT glm::mul ( genTypeT const &  a,
- + @@ -210,6 +210,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00302.html b/doc/api-0.9.3/a00228.html similarity index 68% rename from doc/api-0.9.2/a00302.html rename to doc/api-0.9.3/a00228.html index 0fd79e2f..1b92bbe0 100644 --- a/doc/api-0.9.2/a00302.html +++ b/doc/api-0.9.3/a00228.html @@ -7,13 +7,13 @@ - +
genTypeT glm::gtx::verbose_operator::sub genTypeT glm::sub ( genTypeT const &  a,
- +
@@ -21,8 +21,8 @@ +

GLM_GTX_wrap: Texture coordinate wrap modes

+

Wrapping mode of texture coordinates. -More...

+More...

- + - + - +

Functions

template<typename genType >
genType clamp (genType const &Texcoord)
genType clamp (genType const &Texcoord)
template<typename genType >
genType mirrorRepeat (genType const &Texcoord)
genType mirrorRepeat (genType const &Texcoord)
template<typename genType >
genType repeat (genType const &Texcoord)
genType repeat (genType const &Texcoord)
-

Detailed Description

+

Detailed Description

Wrapping mode of texture coordinates.

-

<glm/gtx/wrap.hpp> need to be included to use these functionalities.

+

<glm/gtx/wrap.hpp> need to be included to use these functionalities.


Function Documentation

- +
- + @@ -71,12 +71,12 @@ Functions - +
genType glm::gtx::wrap::clamp genType glm::clamp ( genType const &  Texcoord)
- + @@ -90,12 +90,12 @@ Functions - +
genType glm::gtx::wrap::mirrorRepeat genType glm::mirrorRepeat ( genType const &  Texcoord)
- + @@ -112,6 +112,6 @@ Functions +doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00304.html b/doc/api-0.9.3/a00229.html similarity index 70% rename from doc/api-0.9.2/a00304.html rename to doc/api-0.9.3/a00229.html index 36a2db9c..c9979e60 100644 --- a/doc/api-0.9.2/a00304.html +++ b/doc/api-0.9.3/a00229.html @@ -7,13 +7,13 @@ - +
genType glm::gtx::wrap::repeat genType glm::repeat ( genType const &  Texcoord)
- +
@@ -21,8 +21,8 @@
-
GLM_VIRTREV_xstream: xml like output
-
+

GLM_VIRTREV_xstream: xml like output

+

Streaming vector and matrix in a xml way. -More...

+More...

Streaming vector and matrix in a xml way.

-

Include <glm/virtrev/xstream.hpp> for this functionality.

+

Include <glm/virtrev/xstream.hpp> for this functionality.

+doxygen 1.7.3 diff --git a/doc/api-0.9.3/a00230.html b/doc/api-0.9.3/a00230.html new file mode 100644 index 00000000..17d7c296 --- /dev/null +++ b/doc/api-0.9.3/a00230.html @@ -0,0 +1,61 @@ + + + + +Todo List + + + + + +
+
+ + + + + + +
+
+ +
+
+
+

Todo List

+
+
+

+
+
Member glm::bitCount (genIUType< T > const &Value)
+
Clarify the declaration to specify that scalars are suported.
+
+

+
+
Member glm::findLSB (genIUType< T > const &Value)
+
Clarify the declaration to specify that scalars are suported.
+
+

+
+
Member glm::findMSB (genIUType< T > const &Value)
+
Clarify the declaration to specify that scalars are suported.
+
+

+
+
Member glm::outerProduct (vecType const &c, vecType const &r)
+
Clarify the declaration to specify that matType doesn't have to be provided when used.
+
+
+ + + diff --git a/doc/api-0.9.3/a00232.html b/doc/api-0.9.3/a00232.html new file mode 100644 index 00000000..0ac9318d --- /dev/null +++ b/doc/api-0.9.3/a00232.html @@ -0,0 +1,56 @@ + + + + +Member List + + + + + +
+
+ + + + + + +
+
+ + + +
+
+
+

_swizzle_base0< T, N > Member List

+
+
+This is the complete list of members for _swizzle_base0< T, N >, including all inherited members. +
+ + + diff --git a/doc/api-0.9.3/a00233.html b/doc/api-0.9.3/a00233.html new file mode 100644 index 00000000..a53537ec --- /dev/null +++ b/doc/api-0.9.3/a00233.html @@ -0,0 +1,56 @@ + + + + +Member List + + + + + +
+
+ + + + + + +
+
+ + + +
+
+
+

_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, DUPLICATE_ELEMENTS > Member List

+
+
+This is the complete list of members for _swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, DUPLICATE_ELEMENTS >, including all inherited members. +
+ + + diff --git a/doc/api-0.9.3/a00234.html b/doc/api-0.9.3/a00234.html new file mode 100644 index 00000000..2ae5b470 --- /dev/null +++ b/doc/api-0.9.3/a00234.html @@ -0,0 +1,56 @@ + + + + +Member List + + + + + + +
+
+

_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 > Member List

+
+
+This is the complete list of members for _swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 >, including all inherited members. +
+ + + diff --git a/doc/api-0.9.2/a00310.html b/doc/api-0.9.3/a00235.html similarity index 75% rename from doc/api-0.9.2/a00310.html rename to doc/api-0.9.3/a00235.html index cbc562ae..d1850fe5 100644 --- a/doc/api-0.9.2/a00310.html +++ b/doc/api-0.9.3/a00235.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
thalf Member List
+

thalf Member List

-This is the complete list of members for thalf, including all inherited members. +This is the complete list of members for thalf, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00317.html b/doc/api-0.9.3/a00236.html similarity index 74% rename from doc/api-0.9.2/a00317.html rename to doc/api-0.9.3/a00236.html index 8265c834..b60a607d 100644 --- a/doc/api-0.9.2/a00317.html +++ b/doc/api-0.9.3/a00236.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat4x2< T > Member List
+

tmat2x2< T > Member List

-This is the complete list of members for tmat4x2< T >, including all inherited members. +This is the complete list of members for tmat2x2< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00312.html b/doc/api-0.9.3/a00237.html similarity index 74% rename from doc/api-0.9.2/a00312.html rename to doc/api-0.9.3/a00237.html index 5be1d96a..66e8cf91 100644 --- a/doc/api-0.9.2/a00312.html +++ b/doc/api-0.9.3/a00237.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat2x3< T > Member List
+

tmat2x3< T > Member List

-This is the complete list of members for tmat2x3< T >, including all inherited members. +This is the complete list of members for tmat2x3< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00316.html b/doc/api-0.9.3/a00238.html similarity index 74% rename from doc/api-0.9.2/a00316.html rename to doc/api-0.9.3/a00238.html index 840930aa..ae773fc9 100644 --- a/doc/api-0.9.2/a00316.html +++ b/doc/api-0.9.3/a00238.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat3x4< T > Member List
+

tmat2x4< T > Member List

-This is the complete list of members for tmat3x4< T >, including all inherited members. +This is the complete list of members for tmat2x4< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00311.html b/doc/api-0.9.3/a00239.html similarity index 74% rename from doc/api-0.9.2/a00311.html rename to doc/api-0.9.3/a00239.html index ecf320c8..e7213288 100644 --- a/doc/api-0.9.2/a00311.html +++ b/doc/api-0.9.3/a00239.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat2x2< T > Member List
+

tmat3x2< T > Member List

-This is the complete list of members for tmat2x2< T >, including all inherited members. +This is the complete list of members for tmat3x2< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00315.html b/doc/api-0.9.3/a00240.html similarity index 74% rename from doc/api-0.9.2/a00315.html rename to doc/api-0.9.3/a00240.html index dd2b3034..53d60b2a 100644 --- a/doc/api-0.9.2/a00315.html +++ b/doc/api-0.9.3/a00240.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat3x3< T > Member List
+

tmat3x3< T > Member List

-This is the complete list of members for tmat3x3< T >, including all inherited members. +This is the complete list of members for tmat3x3< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00319.html b/doc/api-0.9.3/a00241.html similarity index 74% rename from doc/api-0.9.2/a00319.html rename to doc/api-0.9.3/a00241.html index c6978e84..e5f99c4b 100644 --- a/doc/api-0.9.2/a00319.html +++ b/doc/api-0.9.3/a00241.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat4x4< T > Member List
+

tmat3x4< T > Member List

-This is the complete list of members for tmat4x4< T >, including all inherited members. +This is the complete list of members for tmat3x4< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00314.html b/doc/api-0.9.3/a00242.html similarity index 74% rename from doc/api-0.9.2/a00314.html rename to doc/api-0.9.3/a00242.html index fa071492..13493a1e 100644 --- a/doc/api-0.9.2/a00314.html +++ b/doc/api-0.9.3/a00242.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat3x2< T > Member List
+

tmat4x2< T > Member List

-This is the complete list of members for tmat3x2< T >, including all inherited members. +This is the complete list of members for tmat4x2< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00318.html b/doc/api-0.9.3/a00243.html similarity index 74% rename from doc/api-0.9.2/a00318.html rename to doc/api-0.9.3/a00243.html index 48fd7346..932f2311 100644 --- a/doc/api-0.9.2/a00318.html +++ b/doc/api-0.9.3/a00243.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat4x3< T > Member List
+

tmat4x3< T > Member List

-This is the complete list of members for tmat4x3< T >, including all inherited members. +This is the complete list of members for tmat4x3< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00313.html b/doc/api-0.9.3/a00244.html similarity index 74% rename from doc/api-0.9.2/a00313.html rename to doc/api-0.9.3/a00244.html index dac4f1c6..a9e48957 100644 --- a/doc/api-0.9.2/a00313.html +++ b/doc/api-0.9.3/a00244.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tmat2x4< T > Member List
+

tmat4x4< T > Member List

-This is the complete list of members for tmat2x4< T >, including all inherited members. +This is the complete list of members for tmat4x4< T >, including all inherited members.
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00320.html b/doc/api-0.9.3/a00245.html similarity index 71% rename from doc/api-0.9.2/a00320.html rename to doc/api-0.9.3/a00245.html index 11b5f0cd..d9542228 100644 --- a/doc/api-0.9.2/a00320.html +++ b/doc/api-0.9.3/a00245.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tquat< T > Member List
+

tquat< T > Member List

-This is the complete list of members for tquat< T >, including all inherited members. - +This is the complete list of members for tquat< T >, including all inherited members.
tquat(tvec3< T > const &eulerAngles)tquat< T > [explicit]
+
tquat(tvec3< T > const &eulerAngles)tquat< T > [explicit]
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00321.html b/doc/api-0.9.3/a00246.html similarity index 64% rename from doc/api-0.9.2/a00321.html rename to doc/api-0.9.3/a00246.html index 4009bc0b..40f6ecda 100644 --- a/doc/api-0.9.2/a00321.html +++ b/doc/api-0.9.3/a00246.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tvec2< T > Member List
+

tvec2< T > Member List

-This is the complete list of members for tvec2< T >, including all inherited members. - - - - - +This is the complete list of members for tvec2< T >, including all inherited members.
tvec2(U const &x)tvec2< T > [explicit]
tvec2(U const &x, V const &y)tvec2< T > [explicit]
tvec2(tvec2< U > const &v)tvec2< T > [explicit]
tvec2(tvec3< U > const &v)tvec2< T > [explicit]
tvec2(tvec4< U > const &v)tvec2< T > [explicit]
+ + + + +
tvec2(U const &x)tvec2< T > [explicit]
tvec2(U const &x, V const &y)tvec2< T > [explicit]
tvec2(tvec2< U > const &v)tvec2< T > [explicit]
tvec2(tvec3< U > const &v)tvec2< T > [explicit]
tvec2(tvec4< U > const &v)tvec2< T > [explicit]
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00322.html b/doc/api-0.9.3/a00247.html similarity index 63% rename from doc/api-0.9.2/a00322.html rename to doc/api-0.9.3/a00247.html index b0413e4b..eb97120b 100644 --- a/doc/api-0.9.2/a00322.html +++ b/doc/api-0.9.3/a00247.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tvec3< T > Member List
+

tvec3< T > Member List

-This is the complete list of members for tvec3< T >, including all inherited members. - - - - - - +This is the complete list of members for tvec3< T >, including all inherited members.
tvec3(U const &x)tvec3< T > [explicit]
tvec3(U const &x, V const &y, W const &z)tvec3< T > [explicit]
tvec3(tvec2< A > const &v, B const &s)tvec3< T > [explicit]
tvec3(A const &s, tvec2< B > const &v)tvec3< T > [explicit]
tvec3(tvec3< U > const &v)tvec3< T > [explicit]
tvec3(tvec4< U > const &v)tvec3< T > [explicit]
+ + + + + +
tvec3(U const &x)tvec3< T > [explicit]
tvec3(U const &x, V const &y, W const &z)tvec3< T > [explicit]
tvec3(tvec2< A > const &v, B const &s)tvec3< T > [explicit]
tvec3(A const &s, tvec2< B > const &v)tvec3< T > [explicit]
tvec3(tvec3< U > const &v)tvec3< T > [explicit]
tvec3(tvec4< U > const &v)tvec3< T > [explicit]
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/a00323.html b/doc/api-0.9.3/a00248.html similarity index 58% rename from doc/api-0.9.2/a00323.html rename to doc/api-0.9.3/a00248.html index e2263ca4..9e90326d 100644 --- a/doc/api-0.9.2/a00323.html +++ b/doc/api-0.9.3/a00248.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
tvec4< T > Member List
+

tvec4< T > Member List

-This is the complete list of members for tvec4< T >, including all inherited members. - - - - - - - - - - - - - - - - - +This is the complete list of members for tvec4< T >, including all inherited members.
tvec4(U const &x)tvec4< T > [explicit]
tvec4(A const &x, B const &y, C const &z, D const &w)tvec4< T > [explicit]
tvec4(tvec2< A > const &v, B const &s1, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, tvec2< B > const &v, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, B const &s2, tvec2< C > const &v)tvec4< T > [explicit]
tvec4(tvec3< A > const &v, B const &s)tvec4< T > [explicit]
tvec4(A const &s, tvec3< B > const &v)tvec4< T > [explicit]
tvec4(tvec2< A > const &v1, tvec2< B > const &v2)tvec4< T > [explicit]
tvec4(tvec4< U > const &v)tvec4< T > [explicit]
tvec4(tref2< A > const &v, B const &s1, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, tref2< B > const &v, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, B const &s2, tref2< C > const &v)tvec4< T > [explicit]
tvec4(tref3< A > const &v, B const &s)tvec4< T > [explicit]
tvec4(A const &s, tref3< B > const &v)tvec4< T > [explicit]
tvec4(tref2< A > const &v1, tref2< B > const &v2)tvec4< T > [explicit]
tvec4(tvec2< A > const &v1, tref2< B > const &v2)tvec4< T > [explicit]
tvec4(tref2< A > const &v1, tvec2< B > const &v2)tvec4< T > [explicit]
+ + + + + + + + + + + + + + + + +
tvec4(U const &x)tvec4< T > [explicit]
tvec4(A const &x, B const &y, C const &z, D const &w)tvec4< T > [explicit]
tvec4(tvec2< A > const &v, B const &s1, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, tvec2< B > const &v, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, B const &s2, tvec2< C > const &v)tvec4< T > [explicit]
tvec4(tvec3< A > const &v, B const &s)tvec4< T > [explicit]
tvec4(A const &s, tvec3< B > const &v)tvec4< T > [explicit]
tvec4(tvec2< A > const &v1, tvec2< B > const &v2)tvec4< T > [explicit]
tvec4(tvec4< U > const &v)tvec4< T > [explicit]
tvec4(tref2< A > const &v, B const &s1, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, tref2< B > const &v, C const &s2)tvec4< T > [explicit]
tvec4(A const &s1, B const &s2, tref2< C > const &v)tvec4< T > [explicit]
tvec4(tref3< A > const &v, B const &s)tvec4< T > [explicit]
tvec4(A const &s, tref3< B > const &v)tvec4< T > [explicit]
tvec4(tref2< A > const &v1, tref2< B > const &v2)tvec4< T > [explicit]
tvec4(tvec2< A > const &v1, tref2< B > const &v2)tvec4< T > [explicit]
tvec4(tref2< A > const &v1, tvec2< B > const &v2)tvec4< T > [explicit]
+doxygen 1.7.3 diff --git a/doc/api-0.9.2/annotated.html b/doc/api-0.9.3/annotated.html similarity index 67% rename from doc/api-0.9.2/annotated.html rename to doc/api-0.9.3/annotated.html index fb16fc16..4f1aace4 100644 --- a/doc/api-0.9.2/annotated.html +++ b/doc/api-0.9.3/annotated.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
-
Class List
+

Class List

Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
thalf16-bit floating point type
tmat2x2< T >Template for 2 * 2 matrix of floating-point numbers
tmat2x3< T >Template for 2 columns and 3 rows matrix of floating-point numbers
tmat2x4< T >Template for 2 columns and 4 rows matrix of floating-point numbers
tmat3x2< T >Template for 3 columns and 2 rows matrix of floating-point numbers
tmat3x3< T >Template for 3 * 3 matrix of floating-point numbers
tmat3x4< T >Template for 3 columns and 4 rows matrix of floating-point numbers
tmat4x2< T >Template for 4 columns and 2 rows matrix of floating-point numbers
tmat4x3< T >Template for 4 columns and 3 rows matrix of floating-point numbers
tmat4x4< T >Template for 4 * 4 matrix of floating-point numbers
tquat< T >Template for quaternion
tvec2< T >The basic 2D vector type
tvec3< T >Basic 3D vector type
tvec4< T >Basic 4D vector type
_swizzle_base0< T, N >Internal class for implementing swizzle operators
_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, DUPLICATE_ELEMENTS >Internal class for implementing swizzle operators
_swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 >Specialization for swizzles containing duplicate elements. These cannot be modified
thalf16-bit floating point type
tmat2x2< T >Template for 2 * 2 matrix of floating-point numbers
tmat2x3< T >Template for 2 columns and 3 rows matrix of floating-point numbers
tmat2x4< T >Template for 2 columns and 4 rows matrix of floating-point numbers
tmat3x2< T >Template for 3 columns and 2 rows matrix of floating-point numbers
tmat3x3< T >Template for 3 * 3 matrix of floating-point numbers
tmat3x4< T >Template for 3 columns and 4 rows matrix of floating-point numbers
tmat4x2< T >Template for 4 columns and 2 rows matrix of floating-point numbers
tmat4x3< T >Template for 4 columns and 3 rows matrix of floating-point numbers
tmat4x4< T >Template for 4 * 4 matrix of floating-point numbers
tquat< T >Template for quaternion
tvec2< T >The basic 2D vector type
tvec3< T >Basic 3D vector type
tvec4< T >Basic 4D vector type
+doxygen 1.7.3 diff --git a/doc/api-0.9.3/background2.jpg b/doc/api-0.9.3/background2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba0357d518675687e51597dbe38efacabcef4bf1 GIT binary patch literal 64448 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 BDk}g0 literal 0 HcmV?d00001 diff --git a/doc/api-0.9.2/bc_s.png b/doc/api-0.9.3/bc_s.png similarity index 100% rename from doc/api-0.9.2/bc_s.png rename to doc/api-0.9.3/bc_s.png diff --git a/doc/api-0.9.3/classes.html b/doc/api-0.9.3/classes.html new file mode 100644 index 00000000..7fa54c3e --- /dev/null +++ b/doc/api-0.9.3/classes.html @@ -0,0 +1,53 @@ + + + + +Class Index + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

Class Index

+
+
+
T | _
+ +
  T  
+
tmat2x4 (glm::detail)   tmat4x2 (glm::detail)   tvec2 (glm::detail)   _swizzle_base0 (glm::detail)   
thalf (glm::detail)   tmat3x2 (glm::detail)   tmat4x3 (glm::detail)   tvec3 (glm::detail)   _swizzle_base2 (glm::detail)   
tmat2x2 (glm::detail)   tmat3x3 (glm::detail)   tmat4x4 (glm::detail)   tvec4 (glm::detail)   _swizzle_base2< ValueType, VecType, N, E0, E1, E2, E3, 1 > (glm::detail)   
tmat2x3 (glm::detail)   tmat3x4 (glm::detail)   tquat (glm::detail)   
  _  
+
T | _
+
+ + + diff --git a/doc/api-0.9.2/closed.png b/doc/api-0.9.3/closed.png similarity index 100% rename from doc/api-0.9.2/closed.png rename to doc/api-0.9.3/closed.png diff --git a/doc/api-0.9.2/doxygen.css b/doc/api-0.9.3/doxygen.css similarity index 75% rename from doc/api-0.9.2/doxygen.css rename to doc/api-0.9.3/doxygen.css index 8c3f35eb..d1f6c4dc 100644 --- a/doc/api-0.9.2/doxygen.css +++ b/doc/api-0.9.3/doxygen.css @@ -1,9 +1,17 @@ /* The standard CSS for doxygen */ +body +{ + background-image:url('background.jpg'); + background-attachment:fixed; + background-position:center; + background-repeat:no-repeat; +} + body, table, div, p, dl { - font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; - font-size: 12px; + font-family: Lucida Grande, Calibri, Verdana; + font-size: 14px; } body @@ -32,20 +40,23 @@ p h1 { color:#FF8000; - font-family:Century; - font-size: 150%; + font-family: Lucida Grande, Cambria, Georgia; + font-size: 24px; + font-weight: bold; } h2 { color:#FF8000; - font-family:Century; - font-size: 120%; + font-family: Lucida Grande, Cambria, Georgia; + font-size: 18px; + font-weight: bold; } h3 { - font-family:Century; - font-size: 100%; + font-family: Lucida Grande, Cambria, Georgia; + font-size: 14px; + font-weight: bold; } dt { @@ -125,10 +136,11 @@ a { margin:0px; margin-left:auto; margin-right:auto; - padding:0px; padding-top:8px; padding-bottom:8px; - width:1000px; + padding-left:32px; + padding-right:32px; + width:936px; } div.textblock{ @@ -160,11 +172,6 @@ a.qindexHL { a.el { font-weight: bold; -/* - font-family: Century; - font-size: 150%; - color:#FF8000; -*/ } a.elRef { @@ -185,8 +192,8 @@ dl.el { } .fragment { - font-family: monospace, fixed; - font-size: 105%; + font-family: consolas, monospace, fixed; + font-size: 12px; } pre.fragment { @@ -196,7 +203,6 @@ pre.fragment { margin: 4px 8px 4px 2px; overflow: auto; word-wrap: break-word; - font-size: 9pt; line-height: 125%; } @@ -352,7 +358,7 @@ input.search { */ td.tiny { - font-size: 75%; + font-size: 10px; } .dirtab { @@ -389,6 +395,7 @@ table.memberdecls { .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { + font-family: consolas, "courier new", monospace; background-color: #FFFCF8; border: none; margin: 4px; @@ -420,14 +427,13 @@ table.memberdecls { /* Styles for detailed member documentation */ .memtemplate { - font-size: 80%; - color: #4665A2; + color: #000000; font-weight: normal; margin-left: 9px; } .memnav { - background-color: #EBEFF6; + background-color: #000000; border: 0px solid #A3B4D7; text-align: center; margin: 2px; @@ -441,59 +447,61 @@ table.memberdecls { } .memname { - white-space: nowrap; - font-weight: bold; - margin-left: 6px; + font-family: consolas, "courier new", monospace; + font-weight: bold; + font-size: 12px; + white-space: nowrap; + margin-left: 6px; } .memproto { - border-top: 0px solid #FF8000; - border-left: 0px solid #FF8000; - border-right: 0px solid #FF8000; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 8px; - border-top-left-radius: 8px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 8px; - -moz-border-radius-topleft: 8px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 8px; - -webkit-border-top-left-radius: 8px; - /*background-image:url('nav_f.png');*/ - background-repeat:repeat-x; - background-color: #FFFFFF; - background-image: -moz-linear-gradient(center top, #FFF8F0 0%, #FFFFFF 60%, #FFFFFF 95%, #FFFFFF); - background-image: -webkit-gradient(linear,center top,center bottom,from(#FFF8F0), color-stop(0.2,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#FFFFFF), to(#FFFFFF)); + border-top: 0px solid #FF8000; + border-left: 0px solid #FF8000; + border-right: 0px solid #FF8000; + padding: 6px 0px 6px 0px; + color: #000000; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-repeat:repeat-x; + background-color: #FFFFFF; + background-image: -moz-linear-gradient(center top, #FFF8F0 0%, #FFFFFF 60%, #FFFFFF 95%, #FFFFFF); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFF8F0), color-stop(0.2,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#FFFFFF), to(#FFFFFF)); } .memdoc { - border-bottom: 0px solid #FF8000; - border-left: 0px solid #FF8000; - border-right: 0px solid #FF8000; - padding: 2px 5px; - background-color: #FFFFFF; - border-top-width: 0; - /* opera specific markup */ - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 8px; - -moz-border-radius-bottomright: 8px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #FFF8F0 90%, #FFEEDD); - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.90,#FFF8F0), to(#FFEEDD)); + /*font-family: Lucida Grande, Calibri, Verdana;*/ + border-bottom: 0px solid #FF8000; + border-left: 0px solid #FF8000; + border-right: 0px solid #FF8000; + padding: 2px 5px; + background-color: #FFFFFF; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #FFF8F0 90%, #FFEEDD); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.90,#FFF8F0), to(#FFEEDD)); } .paramkey { @@ -505,7 +513,7 @@ table.memberdecls { } .paramname { - color: #602020; + color: #000000; white-space: nowrap; } .paramname em { @@ -517,7 +525,9 @@ table.memberdecls { } .params .paramname, .retval .paramname { + font-family: monospace, consolas, "courier new"; font-weight: bold; + font-size: 12px; vertical-align: top; } @@ -527,7 +537,6 @@ table.memberdecls { } .params .paramdir { - font-family: "courier new",courier,monospace; vertical-align: top; } @@ -541,14 +550,13 @@ table.memberdecls { /* for the tree view */ .ftvtree { - font-family: sans-serif; + /*font-family: Lucida Grande, Calibri, Verdana;*/ margin: 0px; } /* these are for tree view when used as main index */ .directory { - font-size: 9pt; font-weight: bold; margin: 5px; } @@ -556,7 +564,6 @@ table.memberdecls { .directory h3 { margin: 0px; margin-top: 1em; - font-size: 11pt; } /* @@ -605,7 +612,6 @@ proper pixel height of your image. .directory-alt h3 { margin: 0px; margin-top: 1em; - font-size: 11pt; } .directory-alt > h3 { @@ -642,12 +648,12 @@ table.doxtable { } table.doxtable td, table.doxtable th { - border: 0px solid #2D4068; + border: 0px solid #000000; padding: 3px 7px 2px; } table.doxtable th { - background-color: #374F7F; + background-color: #000000; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; @@ -662,12 +668,10 @@ table.doxtable th { /*background-image: url('tab_b.png');*/ z-index: 101; overflow: hidden; - font-size: 13px; } .navpath ul { - font-size: 11px; background-color: #FFEEDD; height:30px; line-height:30px; @@ -710,15 +714,14 @@ table.doxtable th { background-repeat:no-repeat; background-position:right; color:#FFEEDD; - font-size: 8pt; } div.summary { float: right; - font-size: 8pt; + font-size: 12px; padding-right: 5px; - width: 50%; + width: 160px; text-align: right; } @@ -729,7 +732,6 @@ div.summary a div.ingroups { - font-size: 8pt; padding-left: 5px; width: 50%; text-align: left; @@ -762,6 +764,13 @@ div.headertitle padding-top:10px; } +div.title +{ + font-family: Lucida Grande, Cambria, Georgia; + font-size: 24px; + color: #FF7F00; +} + dl { padding: 0 0 0 10px; @@ -769,7 +778,7 @@ dl dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug { - border-color: #FF8000; + border-color: #FF7F00; border-left:4px solid; padding: 0 0 0 6px; } @@ -823,21 +832,24 @@ dl.bug #projectname { - font: 300% arial,sans-serif; + /*font-family: Lucida Grande, Cambria, Georgia;*/ + font-size: 24px; margin: 0px; padding: 0px; } #projectbrief { - font: 120% arial,sans-serif; + /*font-family: Lucida Grande, Cambria, Georgia;*/ + font-size: 18px; margin: 0px; padding: 0px; } #projectnumber { - font: 50% arial,sans-serif; + /*font-family: Lucida Grande, Cambria, Georgia;*/ + font-size: 14px; margin: 0px; padding: 0px; } @@ -856,6 +868,4 @@ dl.bug margin-left:auto; margin-right:auto; width:1000px; - - /*background-color:#000000;*/ } diff --git a/doc/api-0.9.2/doxygen.png b/doc/api-0.9.3/doxygen.png similarity index 100% rename from doc/api-0.9.2/doxygen.png rename to doc/api-0.9.3/doxygen.png diff --git a/doc/api-0.9.3/files.html b/doc/api-0.9.3/files.html new file mode 100644 index 00000000..396c6009 --- /dev/null +++ b/doc/api-0.9.3/files.html @@ -0,0 +1,168 @@ + + + + +File List + + + + + +
+
+ + + + + + +
+
+ + +
+
+
+

File List

+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_detail.hpp [code]OpenGL Mathematics (glm.g-truc.net)
_fixes.hpp [code]OpenGL Mathematics (glm.g-truc.net)
_swizzle.hpp [code]OpenGL Mathematics (glm.g-truc.net)
_swizzle_func.hpp [code]OpenGL Mathematics (glm.g-truc.net)
_vectorize.hpp [code]OpenGL Mathematics (glm.g-truc.net)
associated_min_max.hpp [code]OpenGL Mathematics (glm.g-truc.net)
bit.hpp [code]OpenGL Mathematics (glm.g-truc.net)
closest_point.hpp [code]
color_cast.hpp [code]OpenGL Mathematics (glm.g-truc.net)
color_space.hpp [code]OpenGL Mathematics (glm.g-truc.net)
color_space_YCoCg.hpp [code]OpenGL Mathematics (glm.g-truc.net)
compatibility.hpp [code]OpenGL Mathematics (glm.g-truc.net)
component_wise.hpp [code]OpenGL Mathematics (glm.g-truc.net)
constants.hpp [code]OpenGL Mathematics (glm.g-truc.net)
epsilon.hpp [code]OpenGL Mathematics (glm.g-truc.net)
euler_angles.hpp [code]OpenGL Mathematics (glm.g-truc.net)
ext.hpp [code]
extend.hpp [code]OpenGL Mathematics (glm.g-truc.net)
extented_min_max.hpp [code]
fast_exponential.hpp [code]OpenGL Mathematics (glm.g-truc.net)
fast_square_root.hpp [code]OpenGL Mathematics (glm.g-truc.net)
fast_trigonometry.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_common.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_exponential.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_geometric.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_integer.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_matrix.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_noise.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_packing.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_trigonometric.hpp [code]OpenGL Mathematics (glm.g-truc.net)
func_vector_relational.hpp [code]OpenGL Mathematics (glm.g-truc.net)
glm.hpp [code]OpenGL Mathematics (glm.g-truc.net)
gradient_paint.hpp [code]OpenGL Mathematics (glm.g-truc.net)
half_float.hpp [code]OpenGL Mathematics (glm.g-truc.net)
handed_coordinate_space.hpp [code]OpenGL Mathematics (glm.g-truc.net)
hint.hpp [code]OpenGL Mathematics (glm.g-truc.net)
inertia.hpp [code]OpenGL Mathematics (glm.g-truc.net)
int_10_10_10_2.hpp [code]OpenGL Mathematics (glm.g-truc.net)
integer.hpp [code]OpenGL Mathematics (glm.g-truc.net)
intersect.hpp [code]OpenGL Mathematics (glm.g-truc.net)
intrinsic_common.hpp [code]OpenGL Mathematics (glm.g-truc.net)
intrinsic_exponential.hpp [code]OpenGL Mathematics (glm.g-truc.net)
intrinsic_geometric.hpp [code]OpenGL Mathematics (glm.g-truc.net)
intrinsic_matrix.hpp [code]
intrinsic_trigonometric.hpp [code]OpenGL Mathematics (glm.g-truc.net)
intrinsic_vector_relational.hpp [code]OpenGL Mathematics (glm.g-truc.net)
log_base.hpp [code]OpenGL Mathematics (glm.g-truc.net)
man.doxy [code]
matrix_access.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_cross_product.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_integer.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_interpolation.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_inverse.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_major_storage.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_operation.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_query.hpp [code]OpenGL Mathematics (glm.g-truc.net)
matrix_transform.hpp [code]OpenGL Mathematics (glm.g-truc.net)
mixed_product.hpp [code]OpenGL Mathematics (glm.g-truc.net)
multiple.hpp [code]OpenGL Mathematics (glm.g-truc.net)
gtc/noise.hpp [code]OpenGL Mathematics (glm.g-truc.net)
gtx/noise.hpp [code]OpenGL Mathematics (glm.g-truc.net)
norm.hpp [code]OpenGL Mathematics (glm.g-truc.net)
normal.hpp [code]OpenGL Mathematics (glm.g-truc.net)
normalize_dot.hpp [code]OpenGL Mathematics (glm.g-truc.net)
number_precision.hpp [code]OpenGL Mathematics (glm.g-truc.net)
ocl_type.hpp [code]OpenGL Mathematics (glm.g-truc.net)
optimum_pow.hpp [code]OpenGL Mathematics (glm.g-truc.net)
orthonormalize.hpp [code]OpenGL Mathematics (glm.g-truc.net)
pages.doxy [code]
perpendicular.hpp [code]OpenGL Mathematics (glm.g-truc.net)
polar_coordinates.hpp [code]OpenGL Mathematics (glm.g-truc.net)
projection.hpp [code]OpenGL Mathematics (glm.g-truc.net)
gtc/quaternion.hpp [code]OpenGL Mathematics (glm.g-truc.net)
gtx/quaternion.hpp [code]OpenGL Mathematics (glm.g-truc.net)
gtc/random.hpp [code]OpenGL Mathematics (glm.g-truc.net)
gtx/random.hpp [code]OpenGL Mathematics (glm.g-truc.net)
raw_data.hpp [code]OpenGL Mathematics (glm.g-truc.net)
reciprocal.hpp [code]OpenGL Mathematics (glm.g-truc.net)
rotate_vector.hpp [code]OpenGL Mathematics (glm.g-truc.net)
setup.hpp [code]OpenGL Mathematics (glm.g-truc.net)
simd_mat4.hpp [code]
simd_vec4.hpp [code]OpenGL Mathematics (glm.g-truc.net)
spline.hpp [code]OpenGL Mathematics (glm.g-truc.net)
std_based_type.hpp [code]OpenGL Mathematics (glm.g-truc.net)
string_cast.hpp [code]OpenGL Mathematics (glm.g-truc.net)
swizzle.hpp [code]OpenGL Mathematics (glm.g-truc.net)
transform.hpp [code]OpenGL Mathematics (glm.g-truc.net)
transform2.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_float.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_gentype.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_half.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_int.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat2x2.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat2x3.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat2x4.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat3x2.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat3x3.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat3x4.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat4x2.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat4x3.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_mat4x4.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_precision.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_ptr.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_size.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_vec.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_vec1.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_vec2.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_vec3.hpp [code]OpenGL Mathematics (glm.g-truc.net)
type_vec4.hpp [code]OpenGL Mathematics (glm.g-truc.net)
ulp.hpp [code]OpenGL Mathematics (glm.g-truc.net)
unsigned_int.hpp [code]
vec1.hpp [code]OpenGL Mathematics (glm.g-truc.net)
vector_access.hpp [code]OpenGL Mathematics (glm.g-truc.net)
vector_angle.hpp [code]OpenGL Mathematics (glm.g-truc.net)
vector_query.hpp [code]OpenGL Mathematics (glm.g-truc.net)
verbose_operator.hpp [code]OpenGL Mathematics (glm.g-truc.net)
wrap.hpp [code]OpenGL Mathematics (glm.g-truc.net)
xstream.hpp [code]OpenGL Mathematics (glm.g-truc.net)
+
+ + + diff --git a/doc/api-0.9.2/functions.html b/doc/api-0.9.3/functions.html similarity index 76% rename from doc/api-0.9.2/functions.html rename to doc/api-0.9.3/functions.html index 4643130e..37ce42d0 100644 --- a/doc/api-0.9.2/functions.html +++ b/doc/api-0.9.3/functions.html @@ -7,13 +7,13 @@ - +
- +
@@ -21,8 +21,8 @@
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

< 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

{we3#w~1SSXdVRv0grGPBG9;nUzH?C0?pT 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 diff --git a/doc/glm-0.9.3.pdf b/doc/glm-0.9.3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..58732993121e66b617a932a00e2b68cba20fcb47 GIT binary patch literal 1089842 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 D{d4`=hq&32xO!itKTFItAotA%qP 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


Zf*j2 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 a zV!L?FS`gSThyB$)Oc++Y=;9pnPrEyy8v=0R_6ym5p^D%@Lw_=-wy2^aF9b2;hFg?( zS(a_v8 zDb+-I^1$3~x8fxMdUf+M_E2dqg;uArdO$a&RB=VSj0dWF?q_zpMYz0=_Fr;yoX&|A z*ZFW8`Cl!EIIW}Uki@NQfZ#k$fbv0gBnR$NL9&Zv&xip|_rKTi`X-@PJ%Ndmp`7)c zYLaZDD!P%*(eVtlQXh|p#J>R3>fzzfv}9lgX@LKLJ)#Now|2i=OzgONXNUj5h|A>Y z6$32GqLR=XS~CQq4}Js9Kk$GZn*wc%8^P-s{iSn;n2@@T#>2Z0dk96qEXGK?C(^3~ zd~f3&5Y1ES>9`9cIo=TU7o;moUfMwv548$9&w7A_p&hpyJ6q_}G zN+`(yvj*rMBPSvazQln6W(XwGDcdt;>TRpd4|-OR_P9Xz={ zHh;ZP^eE9F2B>4n=6f?QT?}wdY1^WT0)I5+X&~VG@4x?QDw5V2M#=Gc0L2LI^hBWQH^pyb z*Q6k=o4Xe&cXg;loRrWS5H@THtYq#6YzNJR$ zscQ{6nM&Vw{z4?{i~&B`<&p@d`YC9W6Y%or+qP}uG-Ng9llwz8w`=sGJ#-$WEvkotCo?eL}0JkAaUfW8DwNn3#Mxpdt(hn;PATqX3 zp7FZkbk~;}zs8Fe&i#I;g5KOk`{m0Q8%Zw)kmRPo`}OPBME4;=bG~fx@P#3b>iwZa zI##d8OlgUpv@Hb%V&VaPn99V~+@fVH9+0>#C>gYUsc_~swUy{TF_VeYr z@im$#ym(BKQ#{H)V(Z6`AKY9~>gUg&Z{9IjAJC>-FlacsJ-i_1cDr$0iZq}dtxmKr z6;BiR?4_z|5&H8b#VsXv(k!0e`Vk;DK{DJ&`9M1`X;}O2@Z^~pjnNT#J`~+>sljT9bSR?^XJb}%5fZKn~}CeaAE*Tmg?i_MLNHIWw~< z0(QQFQky$llSaMZaT0Mqz3t!TLH9Gdn8X8GPeCN{eC5o2djI$0sfUTOMf9R2N-@6s zbzOfMfR8jeWQSDUEq%dTuVmfZ?e;{Bot|lV zyujm3jV<^==q$hC<*f^oQZ3PV)y`aA-j&P=VZxOMB(pCxnPp0!&TGaz3)+np@je}v zC{xG5ZI_Iv--SX}BqXq-ee0%BPLw_vpGlB+B>GMyFm3LJ<4v`W?g6jM9eGbLVM#(= z|LT&JoUok)Jon{Ta)|}gOU$}^34u z$kxAM*qIh%(Q7?UVznXktDcpbPuye1;Y749?WE3li{W-EQXMC8LJ9zBb8fL)gt%H* zj%p{-#^nt!COXb09+16J-K(LE+EBo)n7YXY35DUaA}_a|8;rU{MSLki54ORRq_+b# z94>;nuIuk7CL9rRJQ)ut9yb)1$aWmDUni+Qc{xrb^T|iK zAvKKviK6br1ebJ>jMNs4ZA*ZGxgjljw-`32Z=gii(?H26_0@oJUy+2YODrTQMjkkp zj#oD{5EsogPblcoZCw}Nop!Rq3p8HY!3X*_3$S%hr`_UwL9>h0%huFj^)S|s#2m7y zbV!dK5y{*8(q)YAWt;XVS~-EbRzY%}r$m=tfO$b}nb+|9_wVUiQW{y2W?@7MNMkl_ zara0nRf@#(6ZJF?@2yv3RS{v>jCNAufeFu@elPe}y_0D}zXQVMTg(d-uI0gSF#`?W zM7R%cG{)r3;cmVy&P^d)CaFzW%o3BfBqA}p?&!N;mW0^>vuENOF%OxiLq54Y<{MD8?mB}+sx z1TcgaGCvX?l|tLm$6OY0iHRXC`lQElY3pp1hMMhNNcQTn3VB2NXYpVYUskH4x#P~P zaJgd5&e2KPyVzy>Ib#wbX`=X)k_xE=(fCcHs7}lvkveqtJ+lJf| zULtO8HGebV6e0RDKq&G5&p-bd1Be@qY=)=tJbZePctAoS!6BWj7{k702S>(u!4}& zgizMG9k7YqhJdb5ItqxM3Od4Q%0vUxxft!W)kHr6lrZW8Q>7IL2k~VBXNLmX> zVo#(d`Vj33vx)wU=EMNP+*;mBXB4zs%xam@kGU;5FC`{y-(%-~vEuvt`?qi343C*W zY2MQB9-I7h#Na1<21z6F9QFEA%Oi$6uIuXW@9&4_E!7WPur$u>_tb8-zUry7TCtW} zUs=fm?LldzuJ6z=AA!P#N;zp~iYP6Bq?4GzzWWkW?kG2*%`i}_O2FNq@efY{xKIf# zt#zP2Lk#d6!vrq)om+(6Gx~^#F)ptKk^Jg05@+Jy^!9XTLsB5!Gc?5jr1H%N#-+b@ z&w8{y*-+vvPk>!ta49fSy`KOvPZCu+_mxm3P3(sR!>WgONY7)8KM+XbpLl>&%PSG9 z=xolZEm&p7|Inlfv5+)%*~hNy+M~miYOyXwITYSpSo&`DI#0zZiQTKr8(au?Z#gr@=wH8n zeQ6*+(K}XrCT`QuD;uoj`w>wlLX_xTf3v%{PEggZ!*e8sv%7~Bcpov(1`VM5>$`i* zSY}$a1o`PHI)wEJ{8%uH->Pn{(r|yt0IOrS_dYN}RMarN7v+eKPJN}i<3$W0@24UF z64e`|yJ&7AVwDcpNa7=zGQ3CP{>nkgf(jy>=>fr2P$s~0VOk2aB)YrcHrN0iW+8dt z4+DJu{Q2-4H41y3vGf3`pTKv-j4^K6OX1O>A`_LT{}R_q^O_vJ-|tM26wK&w6zYaT zIO!nmuhU&UHx#VAWPlSn9jEs=(mo^@z;9J|46L0-1%VFF`eeF%^J+{o00m+5NJT@_ zt}8~qc0{8&Kg+1<^qh_s&B~9|vR$?SzAR;yt*v`@aH9J)?9;um(uNTDOK>YvG@6z{ zWwx?jDlveLUb`U>-p&0~m$|b76)l4JqzZINdk}l2O(aWHlu*4?5u{Oq;PX7+-rf|` zraf9bwjlaz(SKK9=2l0~BNprus+u3Id!R!c*y1e2>52F?_N^$fNJSy`;n z6bz+X)f|acuQX$-;1vTDr)NWmWGifXdcIb(wV*M?9`i|d&+E2#Nu+PDKiuoWHEUPN z05WsQ0O@X0YjsJxpKwxNUS(3Ft*tEi{9*|C>{QChUkp0G*e`^*rv2N8nzQP z(%;;P%N+FQ(x^2lSrPsGz|0_t7w;vJh*$zrXt*KpRMF>M?ibQoiN2J+WCYac0KH-q zLaFm)NHNLH>mIM`dZLv%Qx$YuF6QNuUdo8pntX0AFH$SR`ed)SO7B0cE6S=P4Ajw(N-Ic~q6cOWLt#>|9Io>KF%IU{zBiks0*j$!ZeM5SI%N2*}mg z|CpJD+V+ackmLa&mZTrdHZ%Mtr-H=4M83e7{dYrWRZ>6Ik>p^|gP-9&J0k zdp@b|L(}Ux4pF}X3ma0BTs`fT8?D3b$UjLg+)va8JYsp?hB_%xn8c(`SM*&zPS9w$h|P$6?33Jz7NP%Y7*H>rF{NDFrBge-Zx4Ty z45#kBGlYMLoi+r*-hAdo@=GRpJeDX^!autgQg=_sq`!`L<119S1kyhDU%!5>{GDK> zeY!-WJ6&f?Bjan>rEL!I$EiMK<=7BNjrW7a;=}K`Lm&Vw&kS#{;fHGGsD`x(V9EwJr8P+tFdl z$cw02Vl`QH>8kFmu>Ur9>K7EkYe%@_iVb!5+*J=MC2^I$B_4Qrv=j`q8mW;kFA^Ha z=uY;-glS08LJ222Ch#Nm(~o{bi3J%l36uobBs&r(Z_%A426&)cc=cS1(}wp8N&r%R zBq>i(4(U}&slj(#VCR$=C*d-Z?9h&hkW@|fDYhtXt;y*ktLB7@{N{;Cw%c8wF32|N zK6mMk{`Z&1pS6h$YOY+A&Vz{dTwIVzm<{;mjHdO51^LxPuKMq9Od2-ozoO5yz!Z_T zp_Gy+9dJ*jJcWUD`8`ghCLM3^9VcNX)P6(Z*gY0ZlD;J%g*lU+p?*F*qlUmq3~(F= zhX!2HAEiqtBGXQT3#xa|=7;rzxI&0)cmla?$bs(JI$1?vlNjY;*_Be84E@hJkK?cx z6p_$VC*X9TR_?DGlw_(CRre12fOh{x`tENu>yn<**^3SAi@Wz^J&{GVv~%lUT)H3>7y!0Nyntr!~nael(WESN6&tF zGX~ng3^dPcv2nxm`J~U9#seu*A(5oVL}%JM9=Be~*496WnY@GmS_$RO4Fjgc=iDeN z6GI}q_ZXG|aPzz-6VNUComGQXF_KJc=r326oNmP%O4`b<=s@@#hc7e_tR{z@Z3J=7 zOMI3rBuYVH2|H;D`v(U4KGAuvy7i-zm~fkJ(M7mEbbc_+ck{%Rh9R|y0d^GTC-hPm zvvrGcXbGL-xpXTxN`h!fyT?A0gGG-^JU~BKgS(GVUYbzEw4oABY?dJ3s+x#oBqfFY zq*9L9{EMvHJULIhr0|p+qbIUdMl3-&JtIpp>ryI&1UwC2y7MONFi~(q;nX2g?lgdE zbU}y*X0*JSTS8oZd25La1EOiku|8N_o;H#4seRz);%ka-rng*`>fA6{<7IMh$G{6( zdlIW7dO6ayQan9c+;&oMI=&VIRmrwKVh!|xF zTyU2s=`6`jD~ljA?b{VYtIcB|1L1}K_Vy<7?Vi3T&L%%yaP^Ra2?>OqsLd0$Ca4uX zCFn&YO&%CXYM>cMV?Y*9jlhxMs=@%^`PpC7BGcC^a`eUO_P%D2(I+j|l}Z^)P^tHR zdb9G=n~qdW-Fs=+tQe14G*M*Yc5SInO=Oz%WbriH%bS!`_zC!|#9b2x$%yeRJ=Av0 zD0N?oeyAs@0g^164i5D=l0Hdv#Kyh0;Qr;ymm^k`-#_T=`O$r~tR5S0$cBEY0gf0R zP8vXA_LrtAqr%t z!^e?kDE?OlINfU^a|Ni}i3%^BEX~YyIichVw zdOKwCGlL#cY<3&v*)gh74V~0m$r{+}`vLHn_4^Lj%YfxMJ=`(eTeBf-Pi7;yrRuN^ zPkTP+{KEh%wi(`|ba;B4PFlF7#!{^0u{k~Ce7c>^2Uovza;x~?9Q+g?*G0ujy6@gk zw|fj*8Hn`C7j$z-dQ61d7E@SZ2fH%^sO6PAwR@;&eM-79KZkog^8C#io#ZzyZCsUBS`uqDkVUzT-$X74Z(X3PJmjAdo_@16_RlE!* zZ3NYms6Rn}B9`j$i}bc4zPgkyr~o|qk;IJ@JRACdBpxuyXFOmFdl_cdiRv}Q=jmV= zv#cLjT-OJg`Z9P{mzPxhT)I*mblIb_N_)(!5pXK*!_gj1AnE2V{LN=!Xoa^p6+v4s zEpNXOP8;y^&N;gqpf$Rowh#Qy>7r#KJA@)Y@=u&Ep_m+NNi*;uNGNCQ#HyVU2uzxs zd)v?uSMZ}jQKvL%yL7D7^LGDdYy~24A%Q5K*VX%tTy=TaRabLM zqQPDB#HI7F>-13~TuOo*x7)3{gMwR`;Ny(`1n!9RiS3SUr3x>o#}oBj-nogskqsDH zYglzo$6VX->f*C(mnEn5UW5eP9ErX3+{9h{E9IPAQp%Cs&<;dFx{l(Q^mg3;;hEu# zJpTUuyZ0_cs_zo340!ga(usK#JzN8(cEj%7k(0(wntTFIi{e);CqH3D(BS!e{>jeQ zl}?dpTS8)0bEcjiDD)OP@qjC=6Zxbiw`AAa#f6e^2jT{Vo_h?f3-n7|B?sbk6n=Oo zWG*%B#)z)Q=AJ~s6_Y44&a~s21x^yV^IZA!3N3U=xY+UQ$VvUyY;Z?Sj8KP+s{yln zpum^v)W|f&-GzUyXjtCtj10*G?rHO`;=<5WLHcfYPvXmD z2fJrS=zy7+9odBwlRGHJE>8@k4WpgiqX#zeYJ)Xj0QwJ4nUuV_FfOhkPj-u5JZkw8 zjpoD^6eTAHrputbdrdH-kfaPzzwHmjr#`0ls$Sdv>C>lYoY|4u9TZ?5BkS98(I)BM zZl}ctl69$$O3*;=0WL;TNjIGk-Q3q(Zx_r9*vGnITyas=w z#BL&qTvRe+V(=o>Uc~E96l^@_a-7cvh6FHe9?`jtH-_%38-xD5}{UU zz>wk}9YKjUp8X&m&>@mo?Tee&;8N0Cj8;nEf^YY>6n4&6mk`8&FKfPXf}LK0s3Jsx zndTAq?m_MuYp(^y=)D~po?r~1btEs_6~lgZughE8k_0=#!^H=MlhD(?OAaOQBkm^y zPzjvgH(W1I@hP^X;1o%b8?_j+kaW)Ooslj?XE$U$7)TSGNIdZLYSiIf6D!gOnwt>f zNt#STBZ>O?BDywjao!L{&|+!~L?+>SE=74gx;I3@BJ0Ee#(}GO)|XlcX*_!oBP}D@ z6CDu;x;b4j`{?O4*~$yN+?6LaD;}UUp=OiQPtdXd=Rf};^CjRlqW8nFfjPnnWF;MS z(h1_HgVCKY&n-!uAo7}X9x?k($d4ztd!?lwN*)ks(MIr-V`(I2#*BWJLNkna!TTvK zp{MH|zlVQNS7eONl5NMXYf_9Nk5Jlh@t5tJgS$swOu|gE-hPs zm1e6z;g=VDOz;0(qodF$K%!dMfD(&B>w=qtIJ3;?74 z!~n%j3$0nFX8--m0DSzpxIQGAPH!Te*g&#Y3P`ji0r2!@y2X2~4LFMm{6%B{YJkK5 zCDxcek+hr`<2Vi_hv?KxoZNVN{QL0HMnVf>fC~kC(??Wr$JUEyAkq{ANCT85GQIm$ z1fJzU*g=9^B8DpBM8y`5I57Z^c=t{X6z6tNVld*R16T4KioKJ(PXO;D29WsIeT?)| zN2c9dRnycK$4at`KBsqc`D5^q0Vb+=DE@7&7gWEnjX-vfVY~t-gG3!$%FHFc%g+yQ zxgq(%%^e=K(I(OwqZZ!W?xa7L&*Cpdtdy5z0FkM5rdW}5Ai5M~UvNGM46F>WZQK2R z7XuJ~YENWH(CQWGOk5{wcJ(pQu2?~){pEsraoH_qm?i4hC&>fUU6cg`<+`&L^F)z;N)M6F)jba%g?phH zPJK1yAjuRSfqpL0$5POc=R%OHESA_AEmtzY%{voQ59~3N%k!O>Zloi7desDZfYM(?e~4Nev>wm7b~(G%sieO>v-wUGAc7t&OF2k+Tsf z+WGY1o{-@wpZb`Iv5BON<`#27&1=$`VgnuGK%w9T16styUpuyTZ2AJ!KZ*OlB z1atAZQNKxAAL!80;HRcfCLy%*gDY8&#dE8;2^0$axuK7pDB0+?KOT=6uY#DDen{T2 z%is_s1b5fq z?(Po30-X8Ixj%3Js+rZRR(GxL>gwI^e)f==_s?p}y-O|+PEq7*j&v5cd<8N`7#^n| zLS8i4=K#CbD!Cp&V<&Ghemh|@hhzXLrXfYX;G>Eka^0j;Yof&Tbd(#(HpS$G&5&w= z>5rrkjV68-4?R&O@&1m1#n`M3&T@Ct96vQQ_9!NM?dj%@WqC>N1FxvO->yzO4W5-A zegE!2q*^R0({wzPLXp_F@a0pOi5-|6o5>u~SPDymn+U~<8*Lvm*Oxo$d{AF{O@g_? z%XNL+?WP)s4k!*8duJh$8JtY;!#Yz%?Mz~or5o$w`lP8BSfMyWKP6Q^fLdo>J`(uB z4>vZ@mU#d|dM13vR0w)$$2WAISME~(Civoi%~(%>Z;78ZL!f6_iaa~L1inn9ue*3F zxfhT_rR7HbH6W3M_#3(2lx?OL^eygO=3KPD3K!-A?^gA-Z)VGNEFfTNOFQ#uHW3xt zEj|twv%$R|UIbM5Q*0vNl)c4Yr|9$*@XS0J$NwHb`a0{%axus8sj7XYYytNY3>A=t zWhlp-Q)q~6QSg~$@=}X3sV}q22DjwH5K2{d^>D2c7wgr&J(onI%YN#5bZy;p8^-0l zMQ$N8dC3K#;}f|e)knVz{Li2FjpCx%vTnf)F0wG9o}vy>+JfNkbU}$9vOMWEF$7tZ zS(#lhe4^?m(VT!(Ve+1t_Z(fK%5siFFe#k@jQ5%zZ zS98qOUJX4hO}YwFAOLS&UQu4}den?nr{EudO9_MFa-(IFuC?dK9fn|*5({caFCwagsB)~MBqaZGUQmJ~9b#pTM)ayl?H^cfB1}zy z*_B>l;9z!xj&u*xm@8l5fY*ON-Wm2?StDP4q#!mM59>%yX1eAxkX3#A_xMY)@ExTx zznwxbIlR~x1x5B^dg~JM?90i!_3^3HccPc)eZFK>;n7o|XjopE6dT#L0vK90Wt98P zEqRrtpmgX^wm>aIR!)J)T8GH2T>moCT$i?WR02uGO!8B!$D$hhNE~esg$dK`M|m(^ z*3?P)U4&1oMMEU9RQ9wX`v-3|rR(Iyz}ae;L=6KT!>SZuCji^tZjX{Ux?n*@K4}=B zE*9^x$bg{iT8XhWF7)PyaZ0h11enqU42DF*}g?^R7d+~UTdbG06 z!T#FRVQg^oX}r*cP16F-U$Qtz#w-X3)Mh@bx0KsYDgvMV%w%jse?JmPU@qLym@gWl zTvC!^nJuejG_R~pt+wa&j9Cs3&7hL&MZnct{+*>`qhBg1eB3Bip{4RIcw9vBkAZ)E zJjjIs^j7t1vE4olbKtS5y{+lHnjhHu)CrNqp%nA~nIgo@K zMgtlNty4va;R}6EZ>nwUx&N!@m(!Xm-(j7B+mgNX|hJqf9M7G1Y0(6volDF9eF7_#g}Bn44{X>><`e+pS0X48_8X z(yV8W+C8TLv#H36+8T-;!g$ita9^n@kksM_duLyR5Y8ow1YeGExcHf&|B40_fptz%EUeno5S7iZYsl?R zY1IED^=tNeRnynD-+wRRE5_H*R%xztUyHnDu_)Q+K8zxU2>zvw?+|3rlQD-`qV86z=FytZFwx$C48~vMES`=c4hNjITMw7 zi}(c8c|~`bk9b>MGPd+g4-0KOV%7LdGb8xvOgZOuQakZv19j0(I5cGyWW;~X4@L>zHN6mFvu2|eU{sMYVoKB;xI1xP5 zY&D~0CqS-%S|%O6(?fnH6icUci+IIMB8eIK<;@-awGozSnyaE`SdNcUQ~=78C%rp0 zvkgwVMOHu}8{}~BLpSa0;VUU)BQTB$LxX0yGt%ChR}8Z~CV>S;8$!WzsP|k_#_oG> zYr|YaKUZsaC<=bUv~O}@(t1w;SZ>$Y3cm5|LjglDp0o!B&fE#s$k*RG*k31);2OK_ zAd3%i1K{l>Om*R5B3(gKwkqKF;Ta;tO6l^_n;1=mRBR4^1s&K+G30j6DPb^2ctDlb zX!{$MDEaSo9**>%7-Wsow`T0ul7)!W97ij(ui$D6$SS(T^^j3Nj94@{K^Lx3lvvs+ zjoFm{mfSaiGSN%?k}2Ko4d$TLu7zKXuHxki{{r``_YoL888_Kzh-OOZXzAN@Y>ZxI z`UonSxh}*!yuJEd|EcvLoG9FvaN=}N8fCKs^et*2&5X*;o@h;a%WA z)pi>^TspBlik*3uyONXy#IvITxaW?{3rmUMu$UvnnM&N4Jlk?P#S%tme7hf%P>2GS z=rNeAWMvt?F{`w}Qc(rEj7WD9wgT6JakoI1}CQkm;5t#XHA8$8SHSRzk;w(C-!H)X~J=7a3`6 zqFG~NWK6Yurfx1I*xBzlGl{`gU0X2EqvjVw@1Xq60!l8qx#d453ntS1#2}AFx$h-N zk?jbJ3PnFS>_0t6M^Ve89Ii?m{e7YT4$Nd$fAK7-FJoZtdQFOHnd%OpK7E-OgQ3EX z-(N#>=&S^c-x=kJJM$eT*Xp*5ri$x?FBgv5Na+5>c$Z}9N{LwB-v_UQpUfwSc^-c* zXd)^hZow^2VAn1T+;*WWPaXnMB~cL$Kr(T9ZDW6ey6j6650Ad6J;vHmhi!fRJWeOlhMD27oCIR zXjR_;8T`Gl(45KH!th34!gn_3JisgvA4BtJlhRPU0_wKxz~3KaoD8=19zOvrATq1u zpm2a#&{VA^Ip%aT2szKkb(f zZ|0mFurGI051Qv~{*9DZkPnlnb6|a2X!OTRPKkkh`j$Nij45P=I9XRfGm3Ex>E6 zBQ}f>d5#Xm$Er*V3s-Pm+N9qTQV8N17=Va&q+P)If=53JzLgin4>4kg3kn(K-e75Q46g{F+(GhZ|(69jLua83lSP#?eT!1iLqlF7L&o z7=yYSwN(Yl{^dP1Pe0~w!#)n`Wm4n|8PJ>$^8Us zs8VG)R5(fdoE?O2^kwn|gm*#eHU=V@q7TT$YQZDnnCFnZ>E_O&lW9m4rJPE z{KJPMmubHJzlX{n;BQh8%+CrDX&?9@djI_5T;gBlR@B(o$h$&EPsqcYI9{=iOm&+M zSPMX5C7iX?hvS~C*NM{|zUXkhs5Jlp(IT(8Ed{T}jVxY`0-s;l(6~08Q-*chsG)fq zC>v@{E!!_6=z@TMczX&HwD@FXlMFaNMHLX&K^*HZ{toAS9g}GCS>~70)Jf4yhwS4t z37!=8QM8%hP~n4BC+&aGf>@tz=~heL+^af+kx|XW%e1kEZT^4;t77=wr{o9r_1{K% z0Rgrm*6^G}D{~BIFKm2MNkMQ;ud*IFsz7x@$cEGpeR?>Dd>HSI(D|Z$ABvkS@L4bIJ~qkMcYvO4 zrnk5^gnw9oG^dAhDuLL5SY$4Y|6rL;iq>BEM-)O_-^^newf)j7;(nRGJw=y~acQ3< zzDX>ltSLi^Y@{)`F{R4+yQA5hTsUeEq_k#~=jE0{_vyv8)!^J3*@-3CUhN8@19e$B z5x$aALP>UI(RidaB7U^tEA1fBS|ej}}fobOUMuV@Q4ydy#{*2(oX+%xw0B zkI%p}4t<5B(kbMQ(qYWZ|3C+RsX)NMfVcL+97EUrwG|X9^4o-362!;RMWhNv;^ASh z*~UEAhXFQN#lK5=c5|h@n(jBdtB=lvN9#^gs}6rJnJA+BF3+2_+cu3LkDhRQ=konN zYu2FPpr-qtb!lTNq|nFJAsxRB@J;HWs(V4P$R$6dIaR%oJ&WYZW*QDf4XfgE44N0+ z%I+Y{Q|~>%PZhO$<$977mFb)QuIs$(G&$uwcSvj+;X#SNs(EyOF=chm3+RZ|_+6zf z>?tT*PY7#6`6lr==QfVv8re%aIeBfg?mJacaE|^yH9aAj64|2LBVTcpIsaQGJWjoU zkO>=QVlWSss#=~*+^ciYR8kvxT-Pf)FocBh3NBs=>oc*#>Vd0I!lWN8tJMT`Yb`wmu?bO6i8dg1U{uv`n=|qM?ON z(i!cQzz3QuWK3TQ)`2SeX=jE{>UJ6YQiKSFA60Ub+=a$njfrG6x)$X&R4P2$5>vGiZu#3R?G8;@ zd0o)QAv{1zvL)a3w<4sdXMraAU#w6_J&x|lr4Dxij#yru+Ii0ULfNM|TnGz*LG3D& zw~<;?F6xlwx5k=6Mpb_f1kjR9h|KDPE=n+xOe?395LMsO-|S@_vN!PAO7>OkY?zft zjMAj>khS!qK`0WSB6D!`&kfg=!)!GITRzDVsPI+yRQgx<{oLnr;G6ZH8V*rnmTqN9 zt01RBEnTy3Z*r=nn|BMv;Fq(=urLcI2HP1WGu8G+EGgi35hH=Wa{{LdYWGdH5+kjFfOti+m0dAGVLAx+uyk}?7k|yej z?k8GdcoevjG8vD;1CEM;lSY z#>TeMtjoW2>g%8?>GRAWCMqeEQhP5O5rVs$2+ck1wKA#W%0ne++kX%6JzM>$5{8EN zavn4zJG3>-pF;bTC6NdRo#}X8n>O`{pl*7MKo#|{3 z?K3vI1Snq$tvaf@y|E(4&3B~tkKm*`ZWEe#Nvj@A$PSpWu$*|J&ypm^$}ye%uvpy3 zV31vSS&D2zX9)}C%1EPGD!w@66J4TAr13tENJsk_ z;RWykHe5ybv7U@*dW!Dzx90;T4)Y3^7qjwz&wnW{R86&ENTOEQHn^pF??Ek*&#qu2 zY5JGJ1aALRy4z1=+pF!@p^v%q4JK$30*Ap?D`}|M^z^9?K;|hj?2833($(!Y_Ev5e z9F*T_Yiot1#v&D0eO_&|3!}n1fUeb%h z1Xh%G7_|g^nRzJ}h&KJ@1X??TRnf%4WYCX{ygt|{xy}YE@uB?2sRByeHmL`j!(3$*Z%5Fu4XYR7(i>_oXcZPk>XXN+)NMy%wXs7Si za~W%i(r|Xo{hw}+E@^K*u*Uc4rOD{BKZugq-q(vq2H+#jJllcbHHp z|MZ-jsW42FLzLL3j(5;UT=9J(4A~}_WL3VkIu+1s3>`?yiO8B}`v5xJU+nH1{m9Ew z7QY(*j5`WFu5$Q8N89YxFc$XI&QRVE{dJZpqzJVI*OWbHa^pjdLUKxkyeeFq57O?n z6^Aa@XGSI6+f+x;2cE$Bq=v)GZ+Y8n8ShbhgnjK-C2^~RHve3zDfo4v*?R|}wd>RE z+u%_|P%<(Bg9YfR;E&vmy`MFk`fqzNeps^nS>(<^Xfkd}KjYzdCvwzrq^_EQ)xx<+ zzaX@mdgjbVq7|2xIz&&EvF1!EwixfK*Fe1$3j`I=`G(U1yzj!^)k=m~wevK7O`@y! za?CR!m%|X`ZA=Bi9~HT-(|I!hucmjF-^&_QAfHgwFK^ZJw`)jaQ6{tV%l>FDH1oZO zVEJfQ_)i}twAK${n&p1U_~@=a;j9W5ZOc@v!cp?uI4kw+=DX6<`3KcgQjT+<{;>5` ziD$O&wa|fPDE;AUG9}6Mdp3t3G}*m~bV8bh6w9@*BCO`Y+8Ac`rY^3|W=3}ZwH%DC zF}Qj7DL+&G*Af(DmozhRFf~&$a<+4U{gQC7b#Qi}{KBr}Y-Va@;_Bc`$-&JoZsqEt zWacd4VCU#yZ)WdG$@kxmZg%!Al$_i=!ouuoUXEt$T3};qGZWYU>qFJi$ixiRxx1B# znTm`!yQ-V9>wi0e?2IhT{(l{6TA8|9{?{G5yqUcPtoenHho6TXXl7*r6U6@eU)svn z)y$b)+SbU`?Ej8hSor^)m}gd2`-(gH*SOzuoYZuqKhKYQ4+l@~JIj^Ztsg0wXolVp zdTvoERn&cMdL&XgX@HK3S!j@#fVcYqT^k$LXU(eoyLF!n6Reld1B(r3?yW+wO+@6s z@Eq6%Bi8GJY|{T#iyxjA!Rx%b<+w_EYPu&MfA6Oz7xL4fBo%ry<$5ylpqxcO$Y zWYTE2a{oe{Nnz&Dn4`5(dEouaG=7b>flnSuDFYNJL0zsq=4$-zbtz$Q%&% zc?(wZuDLijZR~u3HUCR>f*q1q=Z3D$ zbH~M?Qv}?*4`B&Jd!H-gxrJuRVmA5X!59k;)B3k+*uwf(EXp8RZtm^^mJ_>!=$#ULkc zlB71V*yor8Gi@UPNxlKPavUyA-nc`-Ix6#jS%qLp6_R~vvSwt%vGpqrXRy&tdm#7~ zd5z?aoe2?$>qU|Nw#;BxI_Q)@mFq%DwPGrhlJrE$RQjcu$F@ETak&=h1AvkWg7kUS z03d4lIXT^NXeG+O5Y-?pVsN7RcihfrvrjmSH)l87x}1F8XnU!70XZc?V%E{uvz_$y zuWxGziwAdOGLzM%U)t?^NOV2(EC^SM#GmBmbrcMjDY zSxcdj0Vp`*1+kCkvEsgxAzX?byjPChZNR)NxDx=C{ZNg6@lpOU9UiwpyE0oSnkaJy z&$i%|RLYrhNEBKGAmmL+2nsgNV=^Q;j(5_^Hd^|#MG|7a6g zKP^k9Qx`($$GD=1xhXC9%Yai>O&%5>8zzRz{Qdn?zg}KF!>(TZCqVmvhS=~_2C9@Y z>HA$7YlI9k`x|-%w@Ac0R#4$dQG1gqz{bwC54(eBFbi6q&Q5k0JZ%5RszLGXxE;L? zYL+3wAj&$l6CcuwX?SFf-3 zlNO8C^i9p{oH#?iavif^^q0Q|M_K{;DpoTTbD3vxtV4|-_nw@DiP%sbP1%} zJyZ$~$(Xx@_wO*6> z4!wvez+BfKh>(8qu0Y#|1EAaWvkmh+@OBdrjGDE_Rr+9FX2mV+L=TpDq{mk&ksSYvgL(6k; z$9S;YSdOi?>`Y>4@d10|k0*lM)m35FhtSa-u7Yid2&|s-P1=oV-97%k+_?-tV%OZk z_HrC+abjYE6Cw@wd;;@3NWXK#6j~CCe44KXxO{qV0U$#hH0Kw-!FZNF9xoP$6 z4>uCh8|XO`e$a=W>;DidX;w@L+r~TIRRkj{y;27jv8QlZ^hv!s)(yPFdK%VZX1{WY z_QH9t=8tW^f8oOs6R|=-;GoK3-)UrL2y}!)8V1SK8j0IN03$9MXcz{Aroa#lNzaOY~>I&dJNmnx$dj zN{uCroAAKr93V~U!9Q6RHmBeI!*B0v>9Sdj6g?y>R2Z-`zMi2QLf%~!8_|PJtA4{C z6s8-(VfH_csa&kJww1c`m-CqCqzKRHx96_;uvn zk1Y-stC?!&c@V-dLQF-2(RbywcfhBq!y`Af8zi#aAA~=ZbvhGKHVpLjA>>Cp<={Tv zSYY%k%n)R(gL$I$?c0TRCf9vwH%YQXptg6 zw>@(*`w{)Y$wq(#q+(P+OUmA#-PF6O?IONUMCmN`7sfYiM%+krcu)w0Ema_JC`;oD z__lBa{FA2fz`k>$H1S1NVoeMdY~d8jqV?#q51_;Se!(yl=5(U9s&WU2HZVY^^t|3! zWhW4;Hu2!-2sGj;*%&HoG(aEgwlp_8Yq#z5#2KL`s=_fmx8-^nKB`&0s4_u@MfuW5 z*iH-dQ$f_6+9*ITh+wv0^x}RA%S|LN^|LHX)?0)PS2A}Y-kmbGgC|e0TZCN-9xH3xqaDlS{zw5X()`VJ=xne%g zIsnp?=~FQbqGV(_R#>*a4)L3tZQFu7P7Ro8No_8yFItKRU#p*fFIV7Wel#b#8=P&{hW2 zrDGRifcpP#JJHuGNBUoH+-C0CUqvFsYC4$1OODQrmXx}J**ny$*|=?PHmB2hR^LVK zjz&u!MmywmY0yewCZuf3YXQwZX0o5-#hZ;a&cVnch zr+^BNhBTyR(u99zK;Q=x3IqC6t|KMB!+o1I!quLGITIzU@GE4FgA0MYxZUrMSL<5n zwfi2d^h>i{ROHM9Z_IW!_^I(ii>u83s0y2!Oq9qn={93k6CCPxlQYg7{2WTej5%C_ac?ero1++T0(dWVOBu8sqL1uAWb)qfY7s<+xo( z!foq6%^V;B0~4{6k^FT7Gl;Ct-xh~TESR~XgUf`vrzc={|F@0Q{;ZDZ38<~j^=_Bs z64<3AfD)?fXwB`yla772QU|pdOVGGWU4;`kq^HcE_clIME}xxkMsqyUS)9pWuP^IO z=HV#EiSR)T(xVm?e-vl@5oXd;f5$$zRX2Yab3y?MbPZ~hp|h=xF^Y6ZO=qIiS>xNGp3)n*1MLk~JO_i-SlI}Y zq%7z(^v(E)OnliR2eY$6{nFY15~2QHK{LF~tY9uD+&l4RM*f6-D@m|N^GC~e(#x8D zc$&Xm`%Wk>yKuEB16pN2BTL8u*aF8t%F4OOgUn@E6S9GqHwR!R(PG0#NOR54s+Z$7 zKs7I6$R}RDsEZlV7F35&dUWt_<7Xd5(*f>FZQ~HXx6*wsn>>DRsE}q^#}aH_u~bR3 zI0rm=u(!xRS@i;r{(IZ=`a+YZq=i&dA2y}8Jj5B(%Occ}zFS~51C%#Ke8j#p7@FC= ztBBz)vF@XMy$uCt_z2kYgr0Ms&{CjNYS2~}mZ)wy98CXcKU;GvZSoF-=o;n|C*U<9OxwCF4bRG&XAyaYRFHGlPgV9k}AM zGcD%k=Ayd8I5u-@OOOuya9SMiH+Q}f*vM+dQ4`q4b2>~+!s6OHF{1lqvY+?zbJU!v zFW-L|>0Q7Z3W`jSSg+b;dr7lh+b<&E0T(l&xO;8va9|r3Ci+s7L!D@bt(Le+T%AjY zBmC{_bf=s?mU7nhs*Rz2YZ0ZdT{)wdJf0IGC02w-PndK-+rJ@cD?~x{8(@scsECR< zERjCscq-`=Aik3y^n=!0el?fZJL;EI3CTCzLm%x=#;p6@JD*YhLE&X3UsO79KEq58 z0Iy>OSUMt-Ezyi`I6SL;dwPmeVD$3#E(pxY%{>ycI`>Gndk;^`mMK!uS6CW$ zmp_q7srlOrsA%`_X(>V+x9l4g&APJcu2dfg<}+FR>x|bSVIrz*G2s+cL(7E>8HS&Kf;%>CDmRo!liSi zM@x+uFZ-_{vz;1s<2bZ5lu;VG-I4ZF!0E)KFhzg{SU`|KHJY40Hb#s*(~MT| z^LpO41+GO5IvqIQzyZD0O_xjBs;j*oU!nzSlZ5a~WO!oU$hl$P8w4j5`j>+r(e3p? z|F170?wo(8$zWbyZjZKGU`-BVvh1wv7n!X|DA0p#qD{d-1frU68GcA|IxFE6C{2kj zg1;}>m$fKGpM^`x5K;L~ljCInZjMvojQP*1U&$V0QS4I?`R2;wzoTbQB#I*&pJ%nA z`@ox|$=nzkI_`qEC!kA$6c;HmukP+8Oa<6Qpc`-@wT{c34(OYc`=pa}$fS*ud{hK7 z`_tq;Wys3Av26ZEp>HZuGX*6fVT?@X+O$vvpQ$cKQ7W|B#C^qjXw$K_tVyuaxvN4P zhctWhbxVA0E+iHbD=^`9lz~4z+M5JPmL*B>pAa=ppW5W*$_s!qqHopsqe48NakD z;jm88!s82Ae`{nA03n+6=*XSY5<(~dY^a=wb%9*Sk^v(`w6Q&(E`vvN_!4Xp+$hEo z46^s7qYOxmx@6LbKAhL9jTg)pc2AKfVom=(ji-?M83$ONYM)50F0`mE(@ZG*)GV+DY2g7 zvg`2o0{yWj_P%0fXG$|qz-#u6aJ5z^M{F*H$343ZM*a#iEl4f+P${iTm!gR(~T!x8KMSsijSm1BB_H7WxZ&1v)BVQ%qR8hD(K&T}K zhhJL!Ma@|G_D{6Gd6bo93wc zRG!7jH2w@91np!vPQI;;Lk?xlaT_KQ4TC@ZV!%}pS<{*0uasLKU-Yeryn@pK5H1!tydi`14$ZnB=}(i8EHdYDWHR!`U2Rt57U8sj zMI;>8-f#oXZ0m+S@3SU+QkPzcNt8qP4b5s2)k%(aX2k3Sq`I=HELI}@5*oj#g4BjL zbHcAH|DCmR9)E;^Co|p>J_0wYU)V6hH!A#|49~&o3p61aZ8DlB*%5SACs{{AGx>tm zDW_LM6p|_}b0&c!UoDPT>RsP>W4$AGqetf*r-DNk70qw3gy0%KQWjgvP|8!xkU|@* zuK`B#i^h=bCa_E8qqiz1u3{#NapTT6&=D(qL3*-+CbNep_$xIsDGfZ)!igDP2*@fR zedw19y4MQ-^le!eM?}2h$!88B0Wk#&;@;~tGK&w0Bj!T4$zNKx@!RYJ(MQ5XqGRHl zha-Qk&2?($FKa_YB~qQUc2$f12+P4NE!@YXLmCXESuaST&DX?I0$`W^R3sduePK?E zgN=>`y3$<0T`=GBs8iw`OY!jBM8?~Za&`PWWlL|sb(q7n0T8j&strVQn3MwJg3L{# zN2kE4G14M3cqA7p5&w*`Diy9=^*r?{M3grewsfXEf$UT^B0c^LWx09;A~Ks!uR9p$Rb1`>+att%6AF=CNc4J zCj^@OS+&W|$$e5PxuB6qMAEmT?}+7yX1|yn0bP~p^Pi@DH04$3LPSq;>xC7F^@@o? z1XbPC-iCdC3T*3Hgy7bvpeNkj})6UP5o1?-&7jzNb%Hj5BBV>-H+~(9~VLL3+RQkwWu%a<6`tSX9Wls+={Ipis z0`kg8F{NuSyyve|VQzLxqT1ps>w$1hS4_B)g}*Qvy|%^L6b4JV0W9n=Ux2Aojy|E_ zhWQ8@aK}2XbRF;xF{a6C@*B5Rt0~pvU%Bnyi!BG(X5DjK`p*~dPXZRPR5DaE5S#<; z)tzHYjfXfu=}7CoX=6dwj?V>XpSRxW?!=J`DP8%+yE}L?aTJd9o^;vOWU-@Xoo6kt zH4>bozYorn5^40rvWq_t#lF6@eh-o%;CZo43EF8^c&UKRW=q!rWA#TCFCc45v8)1c z)e|}?-*3<9;z&dSw)bmL$w2&_SR#pF*7=r6W4sgArz;h_ahG73Rg}D9n<3%n3zE)<_=t)i%QQx5tp=%*XbN zUpkLYZp+1=xX~Rci}~>@L8n()321EX^{Z z$KyB-+R4|PB}@9a{`?AialscAFRAFA3>qUymyVq9zCdNmGhk%wywx~Dj??0%r7rt& z8owWQF@4gI9sm>wA;*K~`YERZqM0_$1gV=k55s3nzF4;wLS-~^9p|9G%zl)7WOXTf z#RbPqo=)n}7pif8NHL6GvhxZ-C>qihqwmc$7qQ#4<%4&=N7Oru@fnd*b;BFKSo7~8pO9wM^8hciGLSo?Z$!eUJM0; zuNk|!!d9L9(Q+W{(ptHa!=wVSc%}vH(O~m{7&sm1VZE!&dJ;OHgpBI~Yw{}=Wt?Mrh58F4;ivAQfL*|#`Zl=1F8a*u~EPtefP z8oxpR=04kB%EyQ$?o=6qFN{6l`ktuF7cwr%4CRh1z~ECsvR_Eup^^y~4mt;6C7i-z zeW_{^zaNsNP%gVS*VpN=mk}8qO%iJT<*v976L;-ggmYp_Np&-F-~DwxPV{p=AwXR~ zL!o(K7zKeUO_ALYt$^+Ps-RUsy+A1=@OFcio5ekEn8N=c-`k+~wse;1@Az@E(}9X`fX*ZeSPYCrzD)4R?Y;4CIvCIXnsV5 z?6M?r7f&)7{BE1p^LDH#brwvwkwd5#@|1$e)Q=rLqva}4KyvafFNRPm{E5db}D~_;#7>L@m&JJ zLK(lu<0}bFE07IW{!zAr(Q3Txs`cAt>y=Cbv27+s!D@?woW$_1R-ZmZWqv$sx_Gu9 zyrw0Ipo)0R0AGc5LG`2~KNX2c&q}MkD`5}FD$3DCDqZl4I}9n}Pon;Yi!(#U(If1q ziOLWdtf)YcN(dn*d%Z-v9VXt8U3&4Z`C4tzuQn_5cY6QNiUw&esGprJ(e}wNKBtj3 zi~bh<-uNh%+5!QKf%-_PMHC_5PdW;u72xl0e=hF8!7~||Jx2)KZ%y4!N0vQYkUa>@ z*+FusE!L!_DS3QU+vhjQm=J!vy*1Ta*bCL=e@jS`M5siKjjC!us+2pLT=k57it-;L%EWCM?pm0uj(KNG{73N>_)KJo7Epo(`1QCynW0&NuN z>zb)@IwWN>tl$pRi5}wc2G8HWJ1;FAp*!kor>OPxEe zkV6yS&gBz1tN(}6@^W&+G#uOF6lqFUl5O=RRFy;qF3npx(&w9-FDVMf3#UWbU6Wfn48b!M{Q~)qYH~^qzngbnc(q1z02D>J4`TEh*{ow04+N=WgaCVi|+- zm|+~^JY6jDX~uH7JmJ+H~ z?Odd`f4fg%Sw@hdsnwDtgyBCre5Z9X9Q4u*iVak8T^r)05`R4h=?J(!6;?n3Di0T9b$BGAJqbw0q<@7bc6RQJnvat zNx!YbnDa2c8i9{SI;!XH4?Iz>`7|J)`Rs%t)t|9d2Ef()OHI0|b8xNnG{iJxQnc+j z7K98zoc=BOD0%Lj5)uM9zjHJOk|rx9@FY5xTLW=Fa=hc)5sQ-y;9PcXnKq4WdioQb zOEW(_+MqNw*)3<1)f9S>*vH1IqVh^a&~DGjfLbP@^S*x>|tLh=TBJR zHXNHLVaVpBi^y{he945VfJxl1)KW%3j4n0q{JdtcVM;JZlj{A(XwKB`$bISEodfCj zUHfbGT$_WXk1BtbMYnUI%Swp>t!rG?%9@r0Yy?kIUtUK4EaX=$(vuPy#Ap6W>OZ*z zzw^^Ruu7X{G0LO5N~jO{1m%u1rlbemYJ@*_X+zeY16~#aVm*VB;b$9udf2w{Ia>Fg zj|S~yPSyGc1Z?=Ji)ib5;JB`uUOoV(;dsi5y<5c=#R(g;gCUaUqW44-H3O(Fb5x_ZXQZ zG*4{FUvNzced&VA1gffuV1OV_YEI_vj_a=*{4t@33Vy~EIcczBh|*Dn+puya&BB5A ztK_o2yZ`mCf3>ll=lS~jYR@wC^ES)|E6JZ{%-Y(L+2&i8Hl%}EsTY#?h@nb=hEw>& zW??8| z!AuDBusIQeLRIaW>;#S$ouUf&RZ8)i7nr2C6VplKPDHvh`goEafngsW@j^&;fN!D2 z&;w62Jy7UxzA5Lx_OI63{`Kouo2}DR9B*%Ly5y9}BLa?rg$5u3XzpvyL9NH)trS;@ z05+Hdho2<|axy9>Q~FuDgaG1PCiFAEAye?k2qd>yL#{I|Thy?o)_dRgomnXvfvUjd zI1v`KQB_%-$f8PI)Y)f@gQb;wjN?~n4P_d9rYNBpMElK zBHrn{nVTElBW_+_c1@}Xu-4*oajHL??zU>CQ{XSp&qlRBSbY@KHXPR>gb{X9JbE1+ zk`)!UBj*>~>Y)K!B(lkC)y?QKRv7%ij0ajeqKu=F(Rx2NL3?M;g}bs+YJt$uVLqC$T(Ipkm8eva8cK!8V+#n|$>T z0!XaQZ)va7Z#}jbCjyWIVp#WuKoWrVYg`5I8`|zC{}=)G(xyACe7=5p;+X4%(T12Q zsr=M|J*M_)&3d%^1UKQ{Vk-SoKS>Dl@o|}w66vST+sD{>Y1T6q6ww=@LY1wk3d>qD zHJ3C<=$Eo@zG=4izQ=3ajXxe@crB z_C6&jCN|KF81;9gTw1XJY{u{8WLuiGd2LK0z=>0S>6Rq7k_1Scf7G^^geLU$b}63j znJ(%ik|d$L{=TBB6(?A48PR7W0YvWu)d#CMjb>))Y9<1#$Cm+1m}xd|e#VJrYS*0YubluB{nX((f-hpw8TIP|CtWwFs~w&Ar7MhbR&BRZKvIoKGPu$dE$(x@)b15V$!kh;oS@&Xir#kQPYu@0 zfDtIojZcL>JJUR!MI+FP(j|E8mji(c0kh+9OBrqYU;@36KyZ?rt5`Ehk56V!Hn>11 z4n~)N)LmQOeR+B5z2EQmR!+4~PQr#2%1csmNNj0H%UugiSig#^8uCcZjcG%|%c!eC zNd-!9cy@^ys9XNGEr{3)-3{*xbS+76NoE1y;b#cz%ri^^!atUPrRb!-Kj5 z_miG63AW(BiL}GlB{anv^KpnQ zQ`xU9Etx4Dca~*=^}qqs!^IH6u@&=0Lh9>!TAKG!LfgwGHIWd{4_K4j2C}Py(1E(I z1|78D{aB*4);kVr+B=@s?O__jN&^9C7O6MGAkB;%Xn!3-HogstN9=S zZhly{zO{Rm9sxAqKyMFnM^yhpKg+z-t6Qvxr;0Q%?@Rh3NF4A{ld=3qEImeSM|wF%F0>Ru0rqbDKh54mF947$xG9 z1gS!jJ<(r<`$xQzEm~`BB_JW$dURovx|*KImn+GythH2F@&5j9XI$%ov!o+#zF*Xi zEf81vA`;sMD@9-vQ6r@@MgmgvRV)*=SkyJLEmr(%_cPexAT&w|wZj)}_$Mk924)1M zdOKstv0}i(fQ_1N6}N&c;%w?I95OXv^4sk*`|Il~5iA9>u=YO6EdzV0<(N1*nf_KH z07b*sC95ZSNf0gi>w21=Z&Hwz@6kjieV>#^Lv}f-9BcAJ?l{|C=e+B9clGCnBWq0Y zwAS{Lq(9yNrVviQ2$7;2#W$l&W=xGI&f96aDKj3dB@WQ@7WysjJY%{hDQPLWh1mB*E+Ux)jaEzR^C}J|CX()9 zE=c5&ph>gt*N~6~)BU35w-PC6)4~eFfHB75_fy!>t(pv5SJ`m!s5*T5s*S?IG)&2G zz&Dd#nDJ}@!!F0w;3^!x`_BmQ#~*+E`0>M#kREH$PY*xiUM+p)L^@w^R02b`?vbOP zhSp*f(Gbrxtp9At0XBGv%}u?@p?i+bGW#m^-=%oi8+}t>dnzY&?%1-#xooH%=giUl z?YQ7p<}&$$3AG~ej6rbHj>*nY`ZP)d^~ozbTAE|3lj$*Kn#(h;HfYGE`>D%EECgu2 zwyLq;{T?Ut&g(9!>cZ;xC)OhDGn~ziCdrru<8_^HZ*LPj57k?XVXCo}7$41r2tZ|# z5+XWO=qbpX;)YMateF@Ojl3w7cOmgHS5cxIfB z`gvN+I}QRdmAS<`#2Me{QHQ62tMuifY$$6>4v+m_x|4=@T$MH?l2o~~!#fHAWQ(R( zzYI60rk;6kTEDtfctb*2+}>i<=ZdjoQVojZ?WQ&oz_gxXm_)yh<1>16NRp{f7J%CZ zlc%@&0>6OX5uvRZ#icHF1os2(8K1y!3C!EJ?P*3AqW(uhq^Y`uuM%n|6ca=Wnl&oU zjhY@a4hVzdajw?u3}ut(Dq?V zC2cX4q2JI*R`ja_4gTTsq~YNU8n%0#?~)C-x7ddTI8KV5ym<|UUUXiyWHSYK;Uq~f zy(rnkM1YBXJT11%$=YXZ%WGyf_`yk+6QBuaS{piXSP6{+$_2}9qY+2(IK5re~8db?c$RSr@Vu|g*MNIaCMop`gusDvnimfzL8BwlO1_nm*3 zh;`Vni^G9*bmX;qPm;2{SR7~bFC?U%pz0}u)mp&=b4{j1SZ z_v`Xg%Zn2YX$5Vdu&fuO#xd9cHe@6&+rYj-%8o|h@D%tK)74Z|!*fJ+`bXJ2&z{e? zPM4;KivN>FMMY;)1ejjcv&EBCcI^0hq%3>1Hi-kR7{jC)X(*Z(#OBxZ|)=!S_7Rr2e(6IFXmQTtvG>jIC62 zb~}p9QWVYy+OQM26OB39l>qv$DY*@stcU0LB(7=)Dlvq-3Vn+G@=tm-!+_~0R96C= zaoObZvFtWM-yZlX?95pTEjg|#fmSj$1nzX>&mquY>P4he#r-1!EKi0GIAhd?<}%DV z_i7MZv=>~Emqbp#uGt9iT3RIlV@EV|qYLXi?!MU0c8Y2@P7*XAQ@V?B#q?3lEZ^rrI8!!_{Z>SaqHzV!&RlxMhB! z*rdVXAtzgOgfzdk=OVy{xGw2OiE+D118ild-i$GT9yMc*(L}m)lF|$jHw`1Zyh+>XIR`Enwy)49 zOiWlYq?6oc3^(of^$F^E;^#yvOr6xXhM%5Wo4{nBR2K3c&z6*|R=HS7v={o%xY{K_ zZ8)9IeyI>eEagZyuZI-?(iCg#_O0>2m*!L^9%{xp*D_@v1fYs)uKQO^V96Au3pVVb zstn^1R4Jv@YrJ1(CGxJ5%iDk#1OdJp5RBW+_f&>h^N%jo_%^7;UP7 z6~0d_Y^Angsh%I!WKn0){!lo{N+f5AI&t%2ArT;P;Pg;_R~H-nB=LCLHajoz_4PHa z1aC+`DG`)b_%v0QO&@6gTGJPkMHceXitoPfR{ODhM;i$sS=hIF@AhwU45&Xy0A-dE z;bruRenX^!bwyy}5}~jmWIB8;{6y`|j42M&^h!n8QLQ`H=`DHMTD#xxW~kqBKl|_% zy6)}`J!~lpx=bCqUn0Hv9R)o)fm9+L9zivIRnrkF_NS!&d$hND*TkiIv=S|v&<_is z*UY%(LL9i^)XpbdvZv=#&q)d`+Vt_jC)TSa6na4m5xHy;xkpQF&X_VM`@UN#&KTn! zt2GH_?ueMhJEtn@I7j{+?H&&*-TWYi13L#^Uti@kvj0hL0}IC5(A+#MX~p_cEY=MD z8lx7l>}RXrwk0-u;O+-~D@~k?PlGFxT+<%iClOdnW&>r5`k2^G-A7U-t)~yrE?x43 zvqojarWe^KcMVK4@$QF-3xCErLBH`REnG^_Jy33N-ZtM5cY4a@M81dwuwNeK-VJ5zJI*;Y97y*wWMUsqY{E(! zM^1tWtO=$DN!lR|$|O0wl8-LX!p+hxF1bjm(r&G_14j!J)|zzknTaWZfk1DukrJzT z2c!^nzXXz8>tqm;S=$gshEj+lE{sd)R7C2hBmg_xd-kzQ9juw1p^uqrwt9Oa)>T}~rl zo3IzG|9KTOi<~vy81Ckg0NVUDQK3C?)4H(I%VEP42Q_P62skRWWX4-`jp!W-!TMs- zWgi6SzYE4Y#|UoMLK( zJjOkqrSoB}V(&L3fD;->!qn{d%hP#sr8d-f5oBYG!%vQp-AL^$7sw6700Y73`}=!R z6P(nBmBE`I=0(FLnVfOYT`x_15PKI6n30V#0t~Mn8*ZxyN>h_$#8`d)77x;+ntQ~7 zCIM*ddc3;FrnY+w!_2XvVfxi;TPct}ajrjKL^nf$ic&z$^FMmXft2%s zQZ|}L{vZx-z9_!n(TW4zW8zOpUa3Vv4L7O{hu2DUo1f}+VD*>q(K^{3MbY z(}?<6vgoj_3_0H7J-&CpSCFc1D@lMfFV^XT55jhM24& zLOuMjI-^t43u=2@1L}w``PdfSo~qlbmG5x020YT6@6|lxkrv4UB>oKSciYOTl6w9q zK~5rbk0m7fJSRdwCrwB6R|2S?Jzk=rzR_4^3&2Kyarg$)q(XMT!Sjeq@gp9>lO}H> zw36ki7C;t;Mt~ZQDxu;2g~Rt!30^1m>x{<*k8C}b#MvvTW;i9B*EEqQ&g-RaPUx?R zwKQ#SkqaUQL!wwn%A@>7Lt)ORbwn?IWi6nkOVyOpVa5OZw$=4z#G+^+^F& zzfn)9i8zoMW8XxZBusU9x4NBsxlvteSjw-#89ig8OK|u5jcuN$-;6L(nKZ9*DWAu| zCNH5sDVPTT(o&!4^Y%%3I}Mu~D}gmtBc3^xppZb{5ql(xPIpx`<;kEW9k!u%~o)$YJPd!=n^_ zzBbKKdhewqt^Ia^k_RI2O~gI5&8zI2&|f{>e@cL40S?@Io(Mp-p}(HkWhXt}cMQB)3Y_R#4G$7oC33Y7 zaT$YNqJKqKj7vPzFUZ)gg1m{8TxypVU_r-!LV$6#Ag?zn?&-dI{mGDLycDf;UsNdYE|i1S+sdR$5M0FY}2<0aC!mn!V0tu?7}LcdQJjsjJp@= znzTg#GL5RF!37db?T1T^PH1(nYtUfp(=G`h^z(t01Ff}>7=XF$>VKz+PZKj^l_{n0 z$O5c*z)k`^-I4=!GSqq0Pb7de$0gVyeERsC~Z zBVMDuiY`Ozh#GN2GKc;*H3jKpjNRjDl_UVIP`he0 ziCbwqt~F?_?Y^T@RGIOtqzwrrL38)L$oBO!){ySLCwsVKdG}KL9{qb7J!*|Kg9F7{ z6?hBAnZT@TN{YGd@9H2gy1*nl|>ahl90@Z{i z0&u`b+`=~JOliS6XNoH8k$PiIkBsC%Ak*<7Tg>@RjfY)2m&ksw_$ro*Y0)Ren#6owjg0+$b zl9cq!WRUs!;ngL*_Y>#FnVOqk(M@;GW<**^^4#OT8LC?8&9&CyJG`a4XLOa9hwKuF zylxGx>sS}Z^632V6vG;z?lcf z>#z2wMa8+0*XpslTWwtByV#k5T|UHt;pT{!G%n=(XY`U2IjK-=E6nn1YN>Pt<>iGy zz4seV|K4I6w7W%37J!OUA6~w=J`i65IrEQ+v4ak?c^!RGYBq&epuw@KVl zz^{%iU$xkMyPVab$Rn_BhqJiUi7lSNHc-Pv|FUX3&bKC*>Qjn=_)Fdwc`RwFlf-%g zp9o-$WNUtJfS5CJ3g>~GFCE0HuzL(J$i_5b`W7`}MR4Nkfn(Wa1o~AZkX~{4NpHgo zJv7;gY~qrnM4|mt0vu)gjvytIMK9D8oc$@O7(L`;P0C-Lw2Yp49LL++Tk{N_erfY~ zVuR&yCt2$M?p5OUCv%T`?>kj#$MQRWv&D6L;cUc4K`(4v5{5crm*Z+3irS^S8}C`5H@gpaq~4r3tkS?$f+V zl@R?J?}4K079B;3Q4<I*??^RqGS6%#QY&yL@(N@;fAkGAi-Enw3x zl3*=qVY5IthF%bn)4XaUssDyONv*Y=4o^}rNugG3)kZR);#S+Q}oASyyu z9$t21B5$D2%y=Ry2hQ*6TM7M^XS~Hz4AMv^5`XL@-%J0qAzi46-(q3eg6Bi1k<~WY z^na4{1Tw82u%baCCBbgDo9Xfm7fv>$aV9EHss6P`ulp+UiFGasv-{=*308KX`^vpx z_3j&?8g6yD$J02MZ_rUtcfa4?aPgFM>uz!PBP~nyUvbYVCx9A!IL<+W#etMRy^f9q z*=4Urtcs)2?8OQZHv>ELsPz-)2R!wPp*`OIVz}wW%@CANzXw1*hE!mR_v^>&%)-A|C` zo?D^TXt2laL=@dNGKZZVKGd+vrtgGlsORmZvMr43{=D5Dd}DFLpsNF5{e z)wi0GlAUR&!)fkLP-(3g>evHkOxtPVH_sj#`oDhtY74H+np5a%N~N2++Hs7Jm>>?Q z{~g{}B7j6~|0?ld&mS@8M(SGbzkBRUR&YyGA^?>ULC+bt-xF};z!}dP6WkfU+8Z}i zm}GfjKg;JMk@Z4Fpzn3GO@*AV%LmKzS0|2&}4n6%p{J1CcxG2G5{C|Md+?1erm$%E~JJN z%sI}a>t0lB{N>A+mzNj2YlH;Qd~5DET-RB@k2ssLz*E zK4Szwv5ZZH-Q4RqAEcWpYAK6_BX?vWX;(P}_8}QV0k`|k9?42mMrAs&O1+|Exk_>M zqk(i-PFY$?`(y7 z&qe|W_tg)P+&NWghBzofXW;zTH2gYuLW3TtKk=oU3yF(g;dECHNIo;xeO-=-)MC>F zF>5sZ_%M55Lw3vB5!Xz6ECWk}y_^LNe6PKfG?QysnM5tS#kJo0*aU(UD#-$D*d4NA z4_b@5KUqU*sTI%3A;BirFMBj)RfwE*`_0pXMi=Nrx|1)`WY_t)1j;2`(l6P)Ui`y^ z!d~ipG*i^aNh|}grk*pfH?YH{-mdb|kC?!>oH1pz`<3P?-aU>(XK&u)MU47bk7oy6 z_9yjWUqzMnV(d256%xdh;Ec)gI@A`KNAK`Jjf!wzXF5TjO$4YLm}FwUVH@o%U1P5Y6*gz%Dogja6+k-^r9pj3gpBo zaor2ftNqbTk-$`chgUK6cz9lNJk#5awF+Z61Bo8O?e_fDje9cGM}E-pklR- zQwNyFUcpT~RSk97XFf1-$z zIEi`0HQe2I{G?>&h#BxX=YII9`3;9URgK%C3csAB4TW?`hb8o@m)2IiEvL@bBcs-# zz$ojaCe_tM%i5(&aM%xt09*8QN8F5dqTH&XVrMJiDLW~g>Azd?r%7f`f&E-*pXO_e ztLe#HR0^fHQ^jnaH9oz}A!Q3me%TXt?~D}+haVhPnb~7e22-L9_s|ej4Aod**P%z& zTKnNArw%_pGAU91kOr1;CM0zvr^(Ky6%EFzS(spmD|^_!0V9w#Xh@Cx0JiNafA`onB^?n5}_T z%uz)p%ni>)2>soQ1d|t(=84W6l~w`-XL`elf9hlfTzXOEfP|Y)K%gA-8v#WYVEG9E zX#%LE8$1o`Sn3iXSP`cG$}JgVobgbC9&K!biwMxK%%k2eEt9BdeI{}eQYTip*?*%e zl|`MVQB1u)qrRoF5dB)KsTHP+H^i{DSk=^Uu2{#C)RHWcS1&g%o#1hS+N zPb?|wQ47o4J?>|(9s*SZf74>4F0VPa1BIVS`|t@9l~+}zY9QiAdo23e zt_n!2mRVPcW;x~cXtSi+IN0Vs8;2v>teBsmc&V!Rn@jYI08coD;|23{+kl#G6FO*1gH&)Gbox-&0Fe5CyMJ1 zvO6v`SS6#Hq(L$t@$8AzHh8xBOtk>DXhrbmRPHY?FB{xJ5{o9a;=T$C>NTWg5)B$s ztD9dMHDk=3IFO)BEvPU{AhynLai`xF*FIPD-zEz9M7FB?1&E0>arz=vti9+mXd(I~ z77<=^sk~F7&?-B`JMJ$#ads!&p0kt>(A@Fi8q{(FOC`-F0{rx*3v(~mYex()I-;5x zS8px}KxDRPy%`2bYa~jL0QT?x?c29%^d*R-n^&~gN%;|-gj!+_``w}zm!K0S^yCDf zgy4=al#$Ra9urGVc6uQOwIfIL3HJ#7nv@ux5t6L+gjK?)N+jwt9rdh-n6e*!!H4KA zjINmY+T!8TNv&)#$WB^+#dOI1>h!+1x3?cZe*F0HLj-vDqs8fxQLXTeRCX=;3ki6{ zPkm;hff_YCy`XK|_P_k)FDc;D3^AtR1ShBwA_JRd>Ht!w6QoFh`8aGM`Wa?54?5+3 z?E7wBpfo7qd!iJNCE4m{5_Fm#ec<#xBI)ZLS<%bcWlK7R>RB|P9b2A`Jg&9~vNN&+ zm1!Mni*u1?L@+q~_`r0Om@Q8I{Q2|y_wU95uGA*J5ve3V()1EC`T0*<^;-E|4pTqx z|MqYHmMkEhJXuwiUQk!{c%tfnV^`^GuiU)CSuE0rJGK*02k>7xX0({oZ#eAO`5{l5 zhvjo#O^r!3oUp2I9ph5 zJ4Y-Xpf49l=-1_$w3C0dOWb25U0N8zljN#m|VV`rGI~0fDx0{%d25!_=K}G z&1XCT?sEbRFQ~HLjCjalMOd8@HTsJZV)tA}N1SJlP$Iw)4~nNWjE0QNQbtCx_{9)q!3;i-dpHdxh>!U<19seHh^5Kbk_SX~u)NuR}0XPd( z2ahZO7}V-l>`J758NY<#=^dg%v>GuU zphY7AR&?MVO}09>;PQ%&>BH0qt0?}2eiC5!JF#0_QM&ozC3>Jmip#Uwnh}&KBJk|L9{hb#p ziU6OZUo$e}(sC~;PD*t|Bd}dvP_0G)uNaSgaLKYjn;&#+TK_yxogh=i|0K(mKm&4$KCS02-PeB7QzjnngNid=WuI3vij9 z8ea9#;z}noiF(WFYugL$rElbkr5N4;%OmK{0J#7XP?qly5cTv(~&UyvSv|@j2_(NY3a6Si zO>1|*CSh0)*`II(*Xb9~-tTvHQRYVAsI$nH2-8cVmx5kU#z_md;y{^#h&O@PMrE{ok0rrf z36P-Av76)GQ0LOiqAx#51%LNDB@(eUihbXgd$uE{;}QYJ)hz@x<5j^Ed$a&j%BFEt zWICc3Lo^ylc3FV#YwRqh)7g#EVL@4Tm^b zLC7Nln6Q`$Sib(WmxL^0XEVt-OFHvC8>Z759y=&-{y=`E&@9)XHFmwldI$<|^W zwK{1+3&)}~T(v9c+;Qw^ty&WSWRjA~nI+$sRC_f7(neHBRDLb`NDYc#1Rw|0h=aS| zvF}yZh#B|{37wg;dbnuGD#M+Tts^VfLBMCNf?sSqv zyK2<^LVv;*IZWJ0H&3KBn_uN32ZrFe--)%X z6Uo^z#y&kt7)U%x6)BwWezrBIyunCqalNM69S)D+7EhA)5;B@+iV_fs#pb8oU#^6! z4ul3*>i_-y{T6piNL#EJIj!hEZm8?lzXp_>S4|t!bVPXbh;Vx9ovO|VU)H0+cRb%(vp?+`SL}N+qO-qhO||5Wnuz zO_QZ3Q>DtHE2p{`&e_c{XrYS%)#Q@7Id$J(gmp zfN~<1(j4dqy=C+Ih)>kgrTS?wAeUZ&w4io9N)`1%`H{TFU)Gjy! z0~dNXSWyyy2anQGZf=EY4^L!c7t(GchGdFr+Eo=(0=*m_*{)kGGN)ZV{Ol@&o&9|H zkz|*y>3&t%BlnUYlMOt4`vLWW)YFM|Qlp|3DgF5Ir5S+@x(~tZ1~#n9xp;n1W*tx=ZDiw>{7p^RtX>qQLu>sLO+8O_4(=P$t;pKm(YhH zGz|tnfBxLI&6MWy%B3n~I{F(D7~&gKMtX~aA`M>?G`-}3&XN|YnjA6cWN9AI}(j5*M%N@h77amJPiFvgJkp)azN3sDUzZ66RMy1U~FQBo?? z#cg+3oe&?s}&gyhNAvUL?$DTID{|h3+YY!VPB;sF^v-Us3od!MlZ$Mpq`1* z>8U4vl6K=LO<^VbsmF@()-)^0`b%F9PE_&&AH5&Z>&sw``iAJ+D`!4@V1AWAub&_3rY=;HV=W7(+UAx~)69GC3$WqT4 z%!mN9Y~-shpVkU#qZ9h|t_IiTa*h-36LXRsrVV7Pzu{z&e(YqAvG0D>E|J7vQo>X* zQgaR0h9~~31Bv0O|N5}{$yH7*y_vGBF|?+2@obo_B+jXO7FGmnBdvvO*`1DXlggVF zRFwcU6tn;d*_Q;^wvCEkZ9~adrSTanPj+9XZP6%K0_e<{XWVKyN+hrzhc2I}8>($8 zkwu-u#kXssCmlK&%5H0h@_XDyy1 zk_d3124-NToX5^o0#I(rSE(SVG!VS1-l@<}TK}>MI+s4}rNbkHP%W~1$@r*C3H|r` zec@>JOAfFD^iDb69<$yXuC6+;UuF8Dgxn;%sdD+D(DwCf(^lt?lC7j~P^G7rl~1Uy z6Prr8tC~@{!Iz@BBmgZ531B}Y^jjWU83UyeT3Pew07Zj3L#vdEFln=wI;e(Zmpw#3 zBqK0N(46@BuXCUktxvR7*Jb+`JpLW)q{If*$1E8L24l1U9kIuVCH_?xvvtHU1CiMC z^D~#X2pjI-x9O7|_!wpteWf))-(fNB_x$d3zeqxnMCy)Gbx!8uk^sxkdrC@_dX$P* zLVtaIz4_G@hnK!2Sa&QqXuSNB5Yv+HSe)bPCnVvJ1FLvJX(EW`86&96Mj8+XG8`My!=OQtmO}~_G+B^*S^5u(ks10hMZbHG*7~^)k z32z@C79)lD(>HUh7>kIhLdifPXv7WX_JkAH0BSp_wiKy0W8pjqB0%EiFzVD&eByv5 zq&MH+qs!APygWxV7ZXjT%tVtV9jEzLa8`?T;0y=%wCh5yoE-DmiHyo!S9PcPV zI((OE^Md3(-Z;|X4Cr6Iw`yD&oL*9{QvA~k3VZag8cOIIF1}sG3)*5?*zy42j2Hf0 zrUa}%Nn4GWXWWszO3Q76`y&U5QZi{AzNvcpHSXFrnTpTkpL8q*2wg(IpkhlmDbf7$ z@?wLvtsNWA{}aSb!M~%tSAxCWZePB9QEA3+0%!oIr*tNQMQU`-&{l3kYSAptn7Nlj z^2?iKbVp%ELycE2OQ+qPDfFFw-` zR0pKh?1!{!dr2@cP!Ml$avFS<^rwpciBDsFh&1Z9BXcoivvEzx&?CK!E1X zdZl}635y!T@^$Iq5vS;Mc!_MXkMe)0{>4C95^+G-l9(D|4^EgqW5`HjArrQ%1;T}R zi_N}nk~QT-W35NE=#^2836WGKQb6>Ys`@{#R=CyZAFBgf4A#{R5x^Qx&P%$#MfX^5 zNxoKhOZ)ozs>9)o07O5nG}B6}MENF!4Jpp&=jX3qzp|d$`XCN;I0&R}^Ahy5yX&`n zl18tNDK%x%nsf>e-)TC%-jf`VBgACrfyC{=O%_tU5^>Vgf_pO4E5?gw%)6%%Rpunz zQyL;6tut#>s{bR*efjcb`56rjr6n3{$AOSUe-$7(z~k9u0X{)Ly?=6mMc0(DZ2O5z zQbd3=<|NGcTjjkOfp=_DkwDa$-Aku5#zf}jyU!#;BtN?@>JBH@t*Nd6C%)LyE0L;$symltL^ zllnh>`F#2wb8=GCWC%_Hz>)S|MSHk=eTuciOR4MjQCWcZSnwlU-D1tGCb4^D+`R;y z^!S*~9=+b=N^X9?h=$SP8pMt&ZR>&b6P04>@kAR}XHm_V@zm=Q=F%%p-v^`#)1ZFo0kiB7-My=VDC6S0NKRx`M>KW5kE$)O~F{7}G|8trDsS)re79gcoSkQLE zu`2@$BMp8zy)v>+@Kugm-Zlx4-fobU;X3^u?4Lh>+AhVl)`rc*@A0%0+>R_M zEfS|qx|t83h~4Q+(EdoLatclEN4)z{W86GFH^#7!kyq{0rD)FXjLvbT0c|PWyoCNl z1N|xamTKz8rIBP$^k1%T(!XVYlHW+{cVe~l*RNl9FP+%;-RgW!q~mGx@Ao?+fuuq7 zic16jAq8n=JyfwskLh-M#EGJvff#)HiCRfjS1Gp`=OyDM%SgD4Sc93^)jaAI`fsk=dv-Jqa3Id zgoGIbvuc#|vwX8h5&0JLQ3?PC*82}nnV1thJm+@$Vv!yqxF3G14TnPlQ%eqP?EJ`m z-EKERu*3OVFv=W;&8xHy|9ZP>N$v@P)OLvgl>;PkGB2XLX=T1te;NoLH1V>E{HsRl=SmlN59&N}OfInkGx)lF%qFSweaX3*L@kz!&Mmm*h+x zOI?!1)(^{fhf^8J#8I%_&n1!bxyK!nB!DnUz1ch+lnH4o$#O{f^w93(}~&afL4 zvHIDI2bgGoBDW~{rw=4PRJTf9qSa+LlGdMC{vX8)viDYGKWdeboV6YoVJHyxCq2hL zOq#v>!4sPw>uV7OpGi5~Za0A{@x1r`n*a;@XgL0ky|5YpmHqC?S8B(K{;GspJm%oU zZF~dO;WLH`Nvw}VOoO{{A%b9`Uv4EzNlJQM)kKl%w|K{>l#R?(qP-rN090Q(OU{7* zO&zNiAhk>Fu8F7wSRQ54t4Z%&k7K!2tYV85BB`xtBxg*J%$O0jEKBnYY?6ON==k*X zq^W=M>)F-4{rUOXwC^hCB`p|%OJZq`r9`uRdF+6yuhR=L?BOJ9QaKCS@lt}-Ol=;F zN}Z4Z(xZ=j;`B3_MxNi|$+aZFEvAY7e-L1ny#$wEVc(J**d#zbS(+<-y}>xk2&DIZ z(kik)pS$!|{=hc9=Jf6Djaoa=`$N0??$+ixn-nswwLUBW$+Uajd=hkv_mA(f@=l$; zpp{^=9c6QWf5i|SufVCuhn z-RK=#O7?v}&+{Wcy?NR2`_(bAC*nVAHoF$}E22*vxHJU}jt^g#Zbf^g!4UNIW5O$^ zUld)wJ)FeoC`~*4WO{n-wLkqT_89QC^;k)tk5wnB%o44AmJ%;}6 z0!_~z?xpNoz5j#&_U)+}jU{vek2tD-<6 zwQ8cvwxTCPI#CoY+AfoGL)i%Jv%WZyGD$q?*mPlEw+s^Dz1;YJn39^S(VHaV%@f<2 z2@zm=`jT^_fr$f#{+E}R=_gK~ae+f32ul^vraKlEHiSOvLt9lGlG4Mg z+0iq5EHqqxkkn=LNG9<4dLv)N+>y|3^1t0~AOFA9se0D*2=a`Jk=l7+{ONuyOezGo z=WJfiK=j{n#G-`Q<56ThPneD3umLASv3mlPnn3VP1W>n6&y7ysIVvxX8E8$w=>_Bq z8C5F3gvI4+EJ>BzOU|vZd(i>lR|}N&|i65>m+p;s+A?`LynVTpd0& zw=4kB|Mc{9`b|Y08&GMYlM<{0Z|+lQjubcRH}CK7Pft&~Vz0{bL|@8+%IWRxO<+3X zs`wFC>9=jO;Ta#SLY3xKGL;cf%@#K?r7f!J9tphpLe+?y*{Q!p0FCAFHQ?Rvw;}0?lqkMtkEqjHD1D++FcMAE69@*i}9Li4!=Q*6aBM9%t@j47^tLqpCuu2 zNeQ`#tE{Z)fz%PhbCl+gQ~tETw|F3zwlQ3~K~O$Ky!VIrQ-*Vuq6jn)5>xi4!OsGM?E?H-s|Ze@5k4F{rV+-@Rs8x?Y>t&u)IW4N;;YCr?rZFe%0*Z3MxDeoZ<30Z!9``oC0dRlD(x&lK3uLG1(;s)D5;c{Y<*=^TTQe!uEm181$TFMcXxMpmjcBlxKrHS ziWebNZjQ^b!hq3yB zw14HH495cVrq5_5ND-~C*9G3@$GYYlPt6hyL&{jEj+eFnv&Wrw%TG98C4UBaSH z=}T=3f6f|?iHMIQ6hXl<|CjlNbei>0JVkYt^#1Ko9G*!B7WX5Om`?OWe1X#$_xYUe ztTs$0hG>+IsJS9r@l7eQ^8Qpnt5XpO*$y2EM-aCC9Q}H~Zr}N_^YLbOr(N>E-CPuu zDM=w=7g!@Quf~(bOf3hhWUL{H{~W~cPw&BYPh@29Q!y|Zc7D~yNFn@ye+l|Yc&iS4 z*)&Pnf~A5XOy+QtObt%XQBxwGL@p!Ce&Vj)Yq6E0pLB3c(bLgW_zd{B^mcg;QO#6P z<5EQjBf9tp7NR3nCC)d054R9+g~HATtg~UGU2+W~m&A5%S7t1U(J%#`T`&}u8Z2!( z7wuWlR%z-!wyE>Oe>d8MUfP0ITIuYJ0t&E9i81@_FhS=bHZAmOLhr{Q7~!h5Lg5;H zg5`d@^%4v=CO$6kN}&6_hy+Y9;dzT!otJcxKPL;4cTzy#Y|+jJSJu1kLoM%IpR>V# zVd~jAkl==7a_L&V@*sHBl&z1)1B~=BLJW4{)S-3Zlp?sPGvz}_PI@7Q?@!R(MHx1t zd^k`dMw9{Z_f|wM8I&^(wQtP{fE;1?b3XnTr`<$CU2sQWqPTSjFA1^KgjJxA9*sB* zrV9nu+;j{E)tYD)lDh-o-seWxzmKC#5Z9aT-+x_4?ZYkD#MI1O( zf67uMUjpshb^Xw=h`J4cdVrX|l*y#09gAD`Yg01Oavx5gBZDOGI%?s1S+454W{c@WnnGYqQ>7s<1w~PlcymEX69B&E+pKIB?^CDaH)H%jb6=_UP)O zQx%1j#XZa|dA{~#3jdX6!S+Gxh{I{2^{Y0#ffx)%A@Qh7*}7!$zEY%@|6GH+z`fhY z4n3hB5G`$D|Ju})<5c&&n}*fBglB1Aa)Ae z5flswa_73i7m!lH!iPq%BxAniE-_xk74RcSMNap@xf9D;%rn_nQ zj{Q~u6^Ag>ASe09M#*{8av>2;osJHCMBU!PH9Rr;tgvvDvLt2&Ra$I1a@CPVGIj!& z`bkV8cBwR`Ihf-e1ce)qb2cHl2H`{xrq9hfILTO4$)?_XiSLtx4JyB7`@VIMXU1k~ z{zv>Ad5~&ec~iPy24CJ?;8l534JlPn`Bbmnqlhts$4;b2^TFDo6kh5h7Iq1>DtlAj zpfarDuR*;8`qD4I?p~(6R%knBo@A%p*!C#wU%S%#5n&A^Ir0E`(BQ^im-KB2a#{g` zZ(w&@r~q)X2c}E1FJhg_G)2^mtq9CWCezA=w!KFU(3D}BJ-vXiCrA7!Ne9YG0VS#p zfosBPc?+Un$S2(4bG{Q-rz1`+ptND1d6@{*BieHZ7e*9WE4_SSb=WQx;AC^>hMB4Sb}&fC`2j49jlhZu*`Rh4)8)^xL76Wn&V5qR6VGPAzTBL z9jFvw8ULCxngS9TA6a|lBGfbIWH|=)UYM85Op_q|$~m@NZxSSdeH0Iv@?%4odQtsM zBS49=y=LUg;-Z#i`E$dPzlaR8&HkbnvG49hL{NRDwbm>x3Y0=PX+A-vosyogfB?%L zO|LOsJ||IVqa){LaBshA-1FjK){aWe^k4uCFW zPFG1eC1Q3@cps@y;cvX{47~K;MdPKv#nr-(J9I$0T;7966po2Ccbb2+2Sit&G3-KA zW*|@tMyC+3px~w1n6deWf;jh-=y%u&!>#5!S+_KA1QL&UPxFSMZOM(0e@saJoc*uq zN?@f^G%_&;N>A4{>A{z{EMydiV{qvr-(Q83il=mHZmb`so;5Ob{*kB<_0Y)R3PYe0t#UgcKfKB?=Zb&V{BWHlyK@#Y&J z&#Qy9sF^(-2OyHKVR8!Bi2{#%S5en?Y8#E{AbAvXnGZFyC9|>nfDVIlqKN3W5G10w zjt5EyHi#FVmD-oTMYIB8j z_ir8>Z$7DiNXXW~xV*?K_z(0KyrVAZ{Nt6zRvJF&oD{|qmmQSoGS6t$O#Sq{ zHI!}Wl0SjVbNlrP2+itt>2&k+0H>91h_vFI0%1ya^PM&1Uu(xTs|Tt~KSyq!c-YH* zgt|fY;RA1~Q3%%@*%PX_O#zLy4g@o&do3gV z*-xlas{z$S?n)+nB(FArG<`b~5D$OQfN@f`VWPu;Wef6#2HC=?0STd#-!6{jHr+XK zKY{B<@atL362o@Ex7>Y3TAAZ!Qg;Tn0ZeWRQ1Ih!M-8{cVCJ( zHs+y99aRh^c!bFh5{i|zI`NtG2U16Vb6AvyRks1v>Z_HrQ@u$hu)jQlV8_vxEk?O5 z1);ea1_C~ZztdN#!RXfy2UP1&A-4R>invedI;2YgDxe2ZJckuSEz+6#g2j+`n%3&R zcCKZooja(thqcamJ5eBbUSR)$!Pwzxep#VJ-sC0N4jX-kI@gvqvDZ;zfx`NG*T4uX7l4EX&hYh5DYs}|1 zdl&l4N=@k|L#GwjkJUiKxZsZR3=~gEKl0w0L{v2kueEa!-hUF;)R-BSrKl~5OkXTe zwXkp*pSopPCm1*fz1l36b04{(Y!4Z53C-E1%g_kN(Hd8{Jo`z-_TTGbgKb`;;BmD2?_{@#bQB}x{#mR3WWOR z_kC;XJQLQZl0ie{jmu-`y?aIQATzu?qC@|@pGJT9`D{_^(}=$O>Gqd}Qm&7S66ddn zxM=T#{^7V)kfM+By!4rpY0e5uznP-0J4XD<&yNGv{P3n?&Hd`8%Y})0os4Hl;+~-{}|>$~M;o1YmvsbX|M?039$khqv`;3ljVMaZkvAESq~m zpI~Ubni!&EJ)WY@V$rnYZnxJ$vB6zR{vNHFbL z@mZnU&3BB!((f$LmrS1!09=a%)*H6WuD2dvnu3BKRh4zXXuJ+PCTAnKH@I)qzf`Xi z0z*8-WfBqCfH0U|Xin_O`i2A?ETKH%<+0ZJ*>p8$VZEyuDxh1&hu)BI+PJk6!OoWl zqo14Ttq78nX+=5Os&LK3MZwBCcTD}X37Ryea<}iOg!vRkSnR=o@XFI3R$DIVfGIPl ztD>TXkp0R4T>CNexTdmI<*DkqJtJ)(%~u|RPLs=hEWa;$L(~K!Ewgo!88K3TK!c!s#tFpGip!tL;Cq6HF`B>UG(=#?vP#^s=?AQpk=`w5- zzT4Ojn&n&QKm;Z1=jh~Ct4ao}q59z??A^AX!^y3jftCaH)CBr142E##Di86*nLarm z9OL=q#MOgUO#PM3Mf~jhvd#CR6A7QX6^lwTXsDqxCPhLL4iJ6QO>C5!tn;}q;od^@ zj%m^G@&clqdjm#lc2^XxuRpgH@%O);sTgktwFNYF3q(kV<7mx|YO?^9-hSEqg}4U! zE&%Qn6tHJl-VAyq=<*PGlBpZhsi5tP_)6=O&rA(#{-6=j310L6j?O4tk3~x5_kBG4 zjk|Gd%}(Yq^ZC@oESKShUyrQHX&^){@8{pLHHUc(~AJtfa^ zN^qcoH>&Iwoc$&g64rsIM>+S2zAEL;i8-Q~Fv9*Xah4l4<+9L35B zt@FI$dJBWYK;$=Q>e)8t)Y7p6dNu6*(l3o1F&4I?h4sL61Tm}CSrbYGULguZ^qoK3 zu4%1k!-fyzwed`yzDTmRIRb-LtIViGF|#HY3GD-~>l_LhLqNha9}sTZj1oML%7I@7 zKR^2$PMC69k3abf>OCW>p~K)F?!B==l%sU+K*|~s1m`Cole2aj)j>>q+t%6E{}sd< z`|bDv*9-MRm7vgc0H!gMRE(yYtP8WVOEmbmso@GDfrTcUWhArzEkYFn<5OkM-t~yK zU}tSeF;r`JyVP(Cd@RY$P#iOn2up~M%bCc%*%^9Z)BulV^+@DFosaTlCJh4&Ej^vQE|?fv}sG68^_Yxflw;(z`%*TuX`r?3g6lj(Hw|jSv2~C?(T*?!p{KD zxT<1(K6Ey(4^s~l5D4^IP8C~1$6nf>OejwBcGTy9(2sW$0ntM3{qPv2By_ePBpfnX z(U?mRDO__14jKgYTvcCone(Wg;N)tfHq_neVC*R>%kSC((I8Q58$gl299> z``CWmoU-0>-}l%RJ@u@wHniU3V^I&db$TEufW$v%9jeqOHD&d_(e|3L^X>>x)vs$P z&WKFPpoBD6IVct^R5aK(svwQTa{7ee6+7@C zPQ7wW(&07P_vG~$M($iYUqrQ^>yzQ1{+RDF@TMtsQ8On{5R$qCF2c9&(tlEr4qg&kNTjz6afC)I(Kj#Q^A> zCxyJ1vE|(xbhg1cJX-XEf!>u{(@oR_OkPRHb4$v^#$z)-isy=&WEUwOLj-f=H?%Xn zq^?g7BT6qUS-;SWolDoxudbQCKWy!NLT2IiqOLT3wtN=+GhdgG!oIwTxjTG|WN0s# zc9kAR+FRGC4-6d}v+g4og`SlAfpU9sl@MCbwo!7((h`HzcQcfV`aI?TBwqEYd!<3p1I{c#i>e3 zaS{2QRYMu<6|OT&pYHH@CmZRs@}&!9X@WA^@3IRO;mns6j=#O&VGu8p_x^-tI-A#z zBkot`fw+L7Q9zHjC(GMTc=KWn?ZYYDt-$KryTX}Ymz`Ys!#u?Mi0|_-9IUJr_(dOR z11t(AEiQYDW_p0ZC7DBHwf0q!ar8Sh4Tn4FpG%JdOB@+se!PZ#ycfC)_OmWvvXQU_ z`bVegG$vtsk76t5__e@z2rUi40nEz)hHXsH+Rgm?mgH~F*Xo?|aZos?d+A!-pNK{1 zhFicQ`_Bvv=9by44i}Os<&qRGMya)$#6GTP2a-)1M?6z*c!6&5_Enq>jC8)?f@=v97&p%@z2eN#D`JE(Se!v2QHvcN3$9+K~ z^lG(d?%wh&iIEc1xr1;=sgM6+M;qN{>c*>=x$|ruZH%35p*Kb8n)&);r86q;AzInY z$Dp&;1otYXeUMgcnChHF;MkWrmu9PUL@@oz_5)h;(3fUHY97A#u%N#8e}uE!!8&gl zdDcRBofl5Aw|dHVKcH*f%Id-X!oUq!_#jq&A@!Fkre*=SBgPRg&=rjXAsa)XUMusL ze>C1|60@sZDHuy&RqfOTABb}QllZ-h)pqi6Fa;c+z)F3ZHEE8{yqz`h65ShyC+bvQ zHX36+C7FtQV#ktXy+y)AjtS9aJbci0Ep_c3BC@;ZJWMX2elG`8{tIF=g&RzBNQZan zN!@N|Tv36)+FUhDt^>nfCf`+R;aF|iwE`zJkbrlAggiYxC;9Pzmf`hBS?_~Zsiz<6LeIgpHu8Y@$6tPkB7cCUTXx=xQu^#6XpAkHzK2pk7B=t5X zP{aWxgjp>J!~UiU%hlKOTfIxy6@2YV{*qYB8Ye^i&E$6qNRtX~XAer`tMkkes_|$9 zQ<2dxl`yxFOoT5_koBF*_g5!K8}sd6ChA_d(q8g)H(T8Hln#%)MJFGn6qZihX17MY zCnRkzmM6wq9Qj|luE_~RFwkRs><^y{>&{_q!?eO@y_Ni1(f9A(rgWedn~sQ|Mq zjaym>?G6&~G%ik4!%&%gX}A2YM)e`P#whKnlkYBYaX7!ci+a;fx!Z2N=4+#4GheC5@7TZTH;VSV zPPAgoCUjmaSYkk^wUdfyYY9W}xr2G4reI$PDCh0y#{Z`P#JF5Dz;*%w6D4eXn{Kt`Ue>d8pAy!*g-SJu(c=Q(r$%fK?KiTpz zPy3bZ@$hiKEJI+pZ`w$jPazM55`8Ha?C2Fl!r2$&AD{)y?AJi#?(ivgv8Yyzqg!K` z@3W-djXk+DX>p~G0HS8h(JnF>i3>9Peu`IuOO30*P9N*vhY7gl!U`WLqbxrVc@wAT zU07k>2+>Z#COQidn@Htc*>P@Kv|pm6Ohx?71p?=LT5Mwb@9lPMoU1=ZsPFWvbZG$W-|OWr zv^GQ{YqlH8`)TLtuXuH2@sec&u;JheI}ilLv0WbVbZMMgVt zeOqI^JThE+<$FZof0(>MfUIn`IaQK3aH3SBlwn-7jZF+Q{h46YaBhP?$0L7z%n0_i3gTpx=R0sAxF4J2onub zOZo3^KoDz&RXxT#5eC9fCmmU|MfHf~l+v5k=fJ3Y{l!CR&EJmkJXuNf-hufeajY0N ziavHSgg6etd-|e*o{B{eEmRR072g$AWyA1ii?^??y(AJd1cPPVcyP-l5<&;5n|o=* z|0xT5gu@YtE~i>cyqzTgI7Hrue&guufW&HK^9X1P4TUYlRmBeoIc$|A-DsxHO(XT? zg+EaN!v!KB5sgTQm~QSlA}^|7pToAgr^QANnHAZ-_yYT`qlLN&p#0SAU&j1$P~rBh zU&%}j?TsvCSBeE&1ncAbW;4EAq$$CeN`Hriluq@7983n%pCLHC46d8V zg~=xL8)?FObST#cLf%MzLHhU39BGBIMLueao?_E1d+g_irmu~OWe!y{%FfrnR zLWVsNo7vgBMcTHh{O;O{oEAIesijyFSX0L;O zpswHN+9m1X%xNX|2CUA+qhO6SJX(OGn?qljScT2eV|s2k3pX-ele%S=ra*YbpzXU4 zIm|z4C(;=);w5JUJCB|5?=)m4-=0t;?98DTQ2obtl=!Xf_5Si)lxdS5T)?)8c6bGIr%h!R?Gx#+N`e7alkOv zb&n1jz1@iMhZ0g5VS|)r_st@e&R`x8HI!5GiS;NT%>5QH*WHh-Z8ivB|0lFHeZ*h)0$$i-M|pm6s87`<;3@FdGqg1`k$yixykm z8k+_C&pWdL#g!!=dzFQX&L-z(oYL5hdvqkGDfg6&AN<^&Bz zJ7AR@sMj0{${J{xtHBPMHD*(g9Q5ljjYggn!;d_+uX5~{v)ed~2Jw1>7o zV^V$|_&m8#gelyz#ew#8ttg)GJ{sy~|5;;S2EsHS-fWqbn@2Z#E%vC0*p-y1NXV&t z!~1QDwHv$mF?qccBW}ILD&u$FkLy?Xu6d(~ai<7sH-?i6Q3U*s7a$n)cQi?94HZfB zx{RZQnMh{3skH>(kygf)On9tCVa=Rei|%Q!;y(*@HXVf089)5O&hKhE{+ie`%RP^q z3MFy{QPJoTY2@n;nK&B5#{1!dm%{SSP|%>8#GC2*Z9$v_PZ=9Ja9ynby%gVV?Ngl$ zn>2koS!;-#GyI<)(1FZX9hSc7*U_b+U5%j75+Zaz*c;&Lgq?bNh&7i}0Xln9?eeDtqe-CxsZKV-qPWPiFs z!r`iA`TD!JZTk3!BGt)$w5b$v>-c&(7N`AWRdH*LtF)w4*WOv{qKr#0RQ1tMz?n!WBfT0-rC|xg){;*}cv3G`O)L3r?pNvCnK|-Iw zXKrCH`AFs+E`VM+{F)mhjIm@JmAKF{4|!=zB=9-B->1+u&k6f48Ky;1b5G7uORcD+ zM+a!Lsu7Ekx3H52{b4+h*GW`g5oDv#in~ljg}$Zg-q3!cr6bC@ujCa8d^*FNoI^@Q z!L;|ltCaYmHnsP9BK8rGkw@y08_AV+IO@z~AW__*gfwlZw~=LCySg<}3}dTC|um z8uoOQZ5H;X1Gl@NlgIi59r8A0aUng3)Y%ux_ETgYV0@Hs3RL-I(lTg9lqpr!-`%TbJvPa;IUpnRK_3)czm`V39Q=6wy?!B)i7;?I>C#wL?A z{MY^{JewiPP?;J{wPp?XXYkif=*yqjiN>`*UU`VQvIf?KGv@v*8OP+Zd2^tNe>IGfZh0+o2cGhkg_I^FO%+GvcIX)J+ij0T>1PaEO;9kK%^e|2SPbN32@xP znBkRJuq^QyMe{C(l<1C7KUca9>wR(A5efTv^Fx!TIbX>`8+-R0OBX)e;;%ncM(#*L zxnfix6U#!VvZm+A@ii=KWq30SeUdp18-e zh+K!nG$nIVJpC~bZYInorUL;zRHfEovyi*z;-BSkf5s8>_N$kTq+hm9d_(Q7Sa>xq zB#1yuhv2NZEu+Xj6k$Jo#4p=UYZW#q)p$EnH==v*yP#n*j~lys;zGjGY6dP2VrP(1 zM12fBFyEVZKF`st#(&wKn1q^zrXmB0!iXXk*rlHICN4yc+?+~sH=hU}`*Nt!bn*QD z_7a<>KXGQ|@M&Zb_~&>DGcV6bG+@tljtStLR94KZu`UvG1FK(}$teLNKEiNlUyV+j5oH;|E9b)8nY z13xI3T`a>fYAO0uX{4-ow@hWL-YH)VFFQ6=G;oYD)#OC%{U+s#hrI1-_T&!YWuHh6 z^7chGuXK~0vzSj8us(0IY-eOxY-Cm@S$M7QI8*}}pDGhG4xmn73;bmYYlsBBX*N*E z=tj`fI*-EQWWO(9V*JQ&8w`7SA3%Igy=VZ^V3mEZ`(gd53HwJ1*0Uwnn+1({WJwJ7 ze1mltk$eOMP}fKUqs;tw#ku`<7jMyT;VdzqnZ+zSpTc`@iAu0B0zJ+44r*%^`+gg8 zyC41-{k~zEq|(shRT2c&S?ga>|5>?uD0)DaG&WKYg{IuG}})9+Mg*qRGu4s~Irk+qzZjs(#kEd97o zD3_qc9O%jxE!dUL>Fo7SBw;5)S`02cJHnPU^HUAoeZAiMEX{SIJiUkh^YFekR|5qA zzKoJ@;gXR!8&iJ9NnI-dN?HTy%>8-**QuhoccW ztUlnvo~ujHQ{;DWgUvkly^u@u6`L$p0H+a4Oyxpsh~GGs?cD(BiybGLh~S?;V;ml8 zR23(|6;pa_8)=)fIbHIL4mJ4{(IfXkH4;bDjCNFcv>3?~F`%P{8~7H)iP;L%_0U>s zwu8G_*Ol=`Mst3OWP<0L{WY_{uyzq2qkT?|`CgmDaSR+XE~!SV#Y6B_JBOnYkR z5(Pyc0gK(egj&B(@#Tfl;p(8Sm+~Jj8FgP#zz41$NCrdR8uxJE26={5Fz#C@twu6| zRc;GDj;fjbGhT}JUOGg6KHxG#jjja%ehmpQrGdG=&=F*6OetEs1vZovpH}4zfOXye zfeUREponVq0)jmU&_oaMD*wp*nk$PA^4SVRe#1x0T_@#&DBPt1l2w|YE$@9u89H!O zz-rElHhcvY5nX`rndT0`>~`hlMatJ5w$SO&BApUoIBD|w)^q{C(%WdHMsod#p`Sm^ z%i-Ra??BYN#wgf<+9=g|wx7rHzIY!?B4P6369*Qje4C3nXASwY0NOjXb{hB%8SsZ$ zJBT}wDIPqSiSSH^JSPG+8))FmEL|m}chLiJRk+S0)BkgFg}$F2^(LG6W*Io{?lh<$ zC_|l7@*0oP74w;#f3fNwgm<1Z!|#E9Mf~f{c|K|`U`AiJ&CGUFGBJjZu-Pb>8Qh)1 z!97{UZ8fURHYNsW7k;_6&R_=pKHsvAr#E)s#@#AEHWj`N4e8j&2DvY&06GEBxv3#xEyr&xW8OmZExB<`TSKjAecdv%qD21{X@`=laq zD+cDzLC=AmWh6)gE3F?#8@zunR})lra?@~;JtSkBzw9MB3C#m&Wt;xpBk-nwHFn;7@ z8j&^xu0Hzr4pW&7eF7tq^~l&?)#9iH9;*$jXI&;TYJ&+hR27hSw@t_+SeHIY?CW3| ziREuI`!K+f^;Xu&RA6=A46Ix(`*WTLU%K{g7F6_m1nCY8G!pgMJp>tEBG&)MfLbfk z{%|9Bm68~4;$pm!@*xhn{As2f07Y0{a&gU2VS9Dmp@y|d)uQSuR zbq}k>jcdbhy1k&wH|yun3ykPc3#R~@q9!-|h7s_uZ#po5@0O3RBUmY>s+3=3m7pN1 zyc~|1Z+RXS8b`}Rhvt%luS2jW1}@e%_?1s|$)Y6>>B6wkt~&WWumEwJ{>JXHVjV-} z??e+!LWP_5t#+k6e)vYGW+ky&IQE}~|Edl+#D=LlC)cE7kbAg*8{#rcczMkTJY=H8 z+Y-u@{1+0qm)?E9(dw?yvXwJzEb38m;$rdr7{}w^nGC$$3h*uAy<`;OVG)ZboPe> zSwQ?=8;1GPNxX(}Qm8-S?AEj=Z?ui&plLY)2P9b zn%p%l>{lUfw?cMs3W$g%-`=VAM}!f~kL!dx+|Zvj2=QW;d8!RI-g8PZmB8*SP*woc zWb^>TI@jJUqmdEd%>k~xN!lorx>yqZC*V+_aLGohhg0JV4~BUHFx~3NpMEnb_jQ8< zV!?|quBoU!aPtBjCg@KI)gDwQ zjWl~6Q?(7gu;dXw2V`ZarnSz-4q+4@n9+=+T^KpNEkDSkZ$7I;8xQyAq0*M#h2qav zSm9^b00edZ!6Bk?y;Uw5n9N-tfS4zAqU8dXBN!)qOt#dZ4_|a)jQxm7pfihe~sasJH}o^wskk(WX1BcAu$TA9*;iWHIJUz56PZ z&Wr4?o*}N8q`(TPkcA6oHR(8%d84(Lx-JDasqZcX!>B<)eT=_;P>b!$Zlw65V{ADk z1l_CKE$hca0XA7R;E;#Dr$!}u5KlR7j2N8%z1{!qQX?@!n|qN8N(-_%cXf&2H@7mX z2x%C@l)UVr36EM--2GZNVJr_-f?rEg(vo^Qssk9JuN6agE9^tV%))o1%j@;eC=rI5 z3BCiWryDB3Kg13qnSZE&mBN&}0%$gNnk|TXD;LM_7{1OcJ^0f^>&T_4gWeOmN*!@8 z73ZkFo~Z#(D1#57(3-_*mucr|78_e=z&kw>lBwQ`Wa25k6$a0Ah?5vVqp}YGlxAGI zZHEk9D(iOh%jTb<^XO1N1!_9lL1`!#wi<48ONGTmg|ZkCQHJbWA!>=ggCgoW9pZLHj^ZPYD1UA!Qlq}-g{JiREm*wj63tR1Yp z-8?Bcc-SNzyuH+IJf+-R+}&JlT)ipy|Lf@E;_5}g$-^ru%BCIQZo{UpX6a~S<^6wS zXt`Th*+2&Ob+EG0l#^uB^0D;(uakm{g`Lg+Z$Lc<0N1O1et96t2A9PGgrScRoP~S0@Ki+meSSs3AOifKi!`@%-FIL0e?~4CJ z1iwGchQ0siYjt}x4XImskW^$`^g!%!{xgn(cwRx03w?wC9b#lD7d?s$9V-X?zwUwq z0t9C7glAU_8#*#H70>#^f`cL5KAs>noY$L)zk?s|FOU}q|78bKP`ZI&q9Nl5lcj72 zEiD=fB_G`1-!E3F{g<|nzl9{jA)0Xz!rF=4dOp`(6tj96cmJ-CR_Mg zo*`-r5dr*oe2g^%Pfo}PF|hIo35wdzYk}vgr9sv%5Wgx&N(hp4S%l>A#UPF6=jYp7 zfMwjcQk!EZ5y{a+3iH6V+4+ynAR5q?t=F9qVb!~|>^&J}{jz@4BeH1T5vGS7Yxs0ZEM$r{x zGIwzF-|JJks#9XeXeyl)1y{BJg*LK9twiy&%%7SL)753egrGQ%&Zw?7R6ou{rm`8z zkJPrVe@|1}hIt^dxFv!D0`hi5WmB0ps5)tQC>RK!v?Vs?l#-QjyL>y)M z-UwVc_ZW?mw>+yHhClA*KkLoE|*E zVuT@%szP*VX-ngpR$^~c&#?k;YCC1qCY3n+IUw9U%5p%!oPt^_vuU5AQ z4U3=pm?XtLJIS!ViD~Y<-UAdwL=g*KW(}JJ=@qMf{!_^8?&4slxuqG(qZ*f+uGmIs zq|Y?BmbE?_cDE(vaxO~+9Dxa5GFQx%ev8aty@P>BI2J|YA-)%CEBL%=t|`k7)b_Rz z3(Rdubhclrk!yB3h87hSjSaN6x#O}I%pr)Ff~9$y)5QlrF;~$3n>KO~mVP|jC+;<;2UQLAIq~C< z8~=in00cI)H%2_)x=hXwt7N!C)?28OS&pIb`FKT$w+#;g1#P4%FJMl;mZCFFpgdS5 z4=xFMHE>EIpD>h&E3&oeGp|T;4t?wuBS~^DLV(V7Al1k!}C$X0mY7Uer~7#c-5oFsbg#uBSIT8{U$azR-Kn0}9;(T4F0gUjiN zPcert{=%^Y5=otm*x^K501DzVm^)hbF*YM5u>z=%rLr~} z&;r^ULP%V4X-WN3bhUa0{bc*i*IX#>kN$sm_xC*XV-#|H7hFMq#AU_R5sYHeSq5y4 z*Mcwx(x6guMY$dp$(TNInWn+oGR*LbMTkCCCZ_kP_=dMK!GBXd-^OXOMOvTuS!=W5 zrmU+2YXud6AQnjmRA<(7OH^ zmjCITzM3yS1~4*X2-jp5vS``&EK%pPKsyvrAQJ`t>S!+V|5O+x&cY}>n|^ACNCaZ< zS)Ef~#cC!jYQg(WCL$l3XyGRwmhYc*(RATR;4D92d)5F=ip=WRvmGVkTpO}Lmm0eM zU>AifHS7viy7HT2cv~`T8cuW-i0OmS#0rc=D8+$o#Nil^tyX5{B${Zm7W8@)7ix5k zN5D`vDEMzpdVDTd%$G8K&!E9gEMS!)_?39hPb7%Y zFlAQvP=xzNa~F$HEEBCAiqMMDC(*u%3WmX z2@?e*^M_1vWGugQXWHqv*7|K!K50q8`5Cy>e%)d1)Lapdj3!gC5jy8*pCJPsW)TxJwmDN+^HMWwUy_(dHPEF`{qK@oY&H2Oeg-&{Ik0KF6Y1^v_Vz zgvBY2MznIBbBjRBEBKVtr=fG@fzzSBiggG%W~);f;S4woePse^EUFkq%B$iur{lU# zU+PA{ezhn`3zGcIdvcbDaI<5@6401Unabc(F8^%E_09S7K3`Dv4|Bk-Rw=;8%&drl zt!TJ+)XP$XOuWctXoUC*?IO6H!+q#a+uZdA3qZ+?P6|;`0fLd>fAkwJx*9gX;)VTwFeZ~ah1(AKnxaYx-7XN8}|sVK3-Pw67j zW>(0i3P>rRlm1&kZ3OEM_!}=uEm-QTxJQWelW>lP7KnQj3gbVDAU|8Npd1ShOGgVX zsJH8ferDu`$WeOg_e}3PwN77eMQ)2fkh~$_OMPS+KAfiQ_h8mxl{9?+$_PaJ!Qm?= zzP@@%dDEULyJXO;DEX0@Kn+cmb436x#_<}H{u7R>qn?>Y4UA)=CKvKkJLou5XRK7Q z`Wd7gv!$shK#k$`QySNX4(4zvG#{1sMVVY7+A0q_1`({AxW>5IE>S#q?PcT`A88+W zX9Gip?EVE(!JiSrlsC%FGHNz-3Q$`22y!CzZaD>RO?TfCJ+%J}ud2kE!v^Eexh1?C zw=UaZ0mj>FKWXS!C%4{37?c~NI4it{F1+U&AMW6aDi-?KvQH%TpPDK_At2w#Y>^SX z8>x8)yqi4?QgRq#cCA&hc3xe0P*!%TathD4cW9|q{d%t($RPe039Z3zeZ##A?~4|6 z)E9ou@yf8`LvH5zW7BbC6P+#b2l-hc{Ba4pt=d76^HlD(U%Tt9-OBa6{HF2xGwk|j zt3n|9oRcE|Xl;Q)?u9JcGdGK)0Y!b4w*+hMl^P~By1J~*L_{yTX2Qk}7i}lnaq&|E z$4TRh?ZS8-O`@XYF}#;}Uu(ICq4DNo-yZK(SM6Hj&xn)Qu2MnjPm|2Qr}}_aZk^#o zO}##zgThd5x)c1WxW%1t)fb`!G~`n=inubN+>*!8 z(AD{a&ObYk2$`PSwo`mP`PO+ZoXtiuVPM*M@VPk1Gw%G36?3e35fy z;eRH>-Bg>cMIRx-89eJf6%jrKmbDCj1$HSLM20NHKK+KHp0brrwz>dBa@ zY$tJ{6O9S^-#9eyc#peYn~(d?O{sOlY0#Rb=Z5TuA6#?L46Aj zyphDzr?GEDENTw@6<~C-HpN=S zEB-mYgTBYqjNrOCL%S0{5r;uT3cr#l>XYmjt7qvJrF*czxr>vm}Og#SR%W?a{XPPN3`g$^ljkai9H;Fr);NtKCO%b znx6i*xu^NAa$dFWv!>I&~-8|44(}GjdNi?cN#(dqBlw_ zimtM}umb~) z>T3W-Q5XS;evSb|YzD3&s8|GbijLHTnq>=kC{{A>nA;=ATt-pWQ5`XT2a8OAmXcx} zS@Y}%IySOBcIUMa1Y?d01imd3I_9b~B6A@DG6%9%D{C}JTpCpbO(rMGn$xgeh@aBE zpd;CmFno#v#Xe)CK4S?x7f|gv=8DcRF(LW4x3|xqKY#xGIiRUWXY^+tT6|@qCQ#3{ z99WfOb&lz&eiA?x4Y+Ulrbug2c7$?8nA9+{8z%FZC&sbx-Yo}=0Bs%8b!2d@Ds@r| z?_?$)kB1h$CiZRSclbTuHC88<31D>E7Q1q+BU*M!=r>?)z`gGJitr^x`4apNl z+qx@mJg_~G1PCV}KR^N~yu38cGzk!AZ0cErKGCnIM}upvw7dnZrtZY097ib{9EcqV z?2~dVt8IwrKh`|wr)DygIZVt5lfF5$H&a)3ll;6!)EYB2X#r9JNgmiJbe?_!ByW_A zbU|*3{rLpbLbFN0Zj`w0D#<^NGz^G3X)k5)3f5wM;NZ@Jy?7O4P=jFa{o~^!o)x?1 z>$<~`fzUO#69#0t-Z4TT9p$N!F*6gQ-@t(bGD!mmzsbZ9EmSDWk+vBXOu9vE|C0bx z7%`_>NO1!JO`tHEb!h-t1NN0Q~&Wsby0`bxK zXoHw`%=~5?a25n0`ehJRc}%2A%O){NV5=`H4H39;AUwe1@i^6VBG1&;)-5J=HMjjH zEI#J?#DZYDVDP~4KKo<6qBy9b;Dd!#xoveFybgpDCKrBYi&E3ndT#mFe&^oV_4U6Y z5+%%TN+7D4NTomIfUTw=w#~C_`z}|;5aod*QdE_MTvm25U&3(ZT+a}x$-p&aDI|e% z<0?(&cWP?L?wlQ&xRMNEOUp|r;+|F-NlXn(6jj?X*Sk_Q2Toioi2zbL&A;4z#wfdb zhpjA{Ev#jnqLF0|>+`ehOa60vO<6fplc9R9<0$la3K7c;Cxm_ypkVWq>6*H0X~34f z5Y0-Rh9>L1tqGsD8vu-%Zl+hiQ{q@>Ft;+{)75@e7#w&!9>3;*?J*+-F!U1EGP(j& z9_tA=9e=iU)MBu(=hFNiGfTZK>T?u}ShhfKYaGQIq@jir3Ni;Wn%Rqz%!KxFK&;*T zVU|g4*2g)7PEAZ5Qiv3+T449OiH( zL%$}{KKWPH^hm*HzB0?araYB6FlKI4(0||{kcLV9k-U0V@mAei^w+0!&0Q-y#OGU{ z6r%sGVKt2eq~gf&oWjt|V^IgpxQqK(dxO^H!aM?Q|OFe{^Aftnd$mh4;4 zd1OmX$Dim*vSRB2j7xX;CYqn9za(ru!A({e%UI`FOcw}H@{r{^x zug#Fn-}5i|mdt^g%+oL98_6KW6}mcClv~MRrDD*yzG6sp%)>3}IxowRDWghHk-oE? zHV$aQD~4rlhCm0-{p4H;oyncP$GxlF8ioJYx*xmD##p0~0zPykf}}DU3p4+6ycrxU z90Rm8)G3L~_G!J#5;J+;T}I1mNsF-~?e?LRxuHMGbzNs1|CVuJHCjb{jG&*V8)a+x zdqZZx#=*kDKsKMlZy6* zS8ltI8*jQZ#q~AQeazijQI6v{zkT~=rqp_C{HCm}Z)|Z~|9Cv8IqQHVHO2_wwiK>q zb(%e(3d78gIR$g!%%WpATh8FVtOm(c*k+VhtMtb>iV3;D>;KGUELqoB5qosN0>f&L^1a(gbUGZi`q7Ibjj!m>556(KauccuZY z3A=e+*ZJq4f41F-@VNmX0meEE$i^uu`B+~hsK&+haY$v`4FmKb%3`F&y^Qg!~#8rGA1;H3G-de|eOtdcokOw+yA>xN@4?>HdS$WOCPtlZ3;dS{xA zPfIqmHI*6CmUzcp_`sBg+AJLFS+tuXfMzXN_&Unybw>Xk2jp{jm(U-7o`3%NCrtut z9;k7`sKuXQY7l| zz_vnO%_A}D44Z{JD^B(!!? zi~9sGD+Z~tx;&~poWKW8wT?f3{P+>?|B?qV@L8j?i;p55$TDTbk5u|Dh_^oKN-~zK z!OWPk{ntG1#%RE5`x>7RPa3Y!3o%ZRnT+RVeK)KQl2k@%; zJsn3@LkA{MzYPKK7{kyX@1l-(`f?(#%ss?v4BsHC?nL_s!h|h1t{4PM1Px282jYi} zNIjseS$5KZ$cXx*#q@6P@9%m6-m%WQO9w=7W&%+ammMj~DR5Y{&}Z6;W_ZA}*|V~b zeqcd7Ylw$l^DVhXv%a3iDNij(6-*RH@`^T(sZ3g2kd@eUV}SqqI~l~GMQt_I?BLMVQ`uIr4`u?O5P z9Su#Ixfq(dfhj8E09`?yfe^W#-}jx35D9i?%gsvVV3dOg>E=r5g-kPXhQ5pAvz`W{ zvKNH-z?61b7d1&eYz%cQ^QpT6F~?k^(bpt|%+`SeLn)lBse(fTBqb`E;=SgoJ6c9@ zL#oUkz|<;HD7Fmf$NTQ(0j{}@<7K|6g~AbjC?E5;Qfon+(tBU>@iG<1`l9`yPs6Z=QKRf-#~O-`nNYTz8j%yIDR0|m{A`03 zdVq!{#v;IlSJ?#zf&hG>Z<$AKD#ShJSrUpM2HwnRp(!oepa-x{DrU6~=dI1^A-VpT z#|qJovNdvlw5Im{({kf>sX4j=K}}jO*dSZe>BkB;Ki17|6%m&a;4U%OcVYdQ1KhSA zt2huKnM(Q`!}K+xqtQKZe1YH_>Ep*dz*w>>>+sYJigYw!{yWlzWjzHfv*^SIUo+}k z$18Hupa>`10RTNfpBrvkYuB9TQHZDzXkY~tO=Q0>zg|T~ zUe|ckzLylmQBPKnq#>D?xq9V5Vpm1BK(~|L8T}(|u@C{a960c1w|29(s;*H$Uwx^1 zDzh65QHuG;EF1ugG34LsI=>m)@QuSGO^w^ruXt0uU_^Vv1e3z7On?jf<>dbIWn~R3 z2f{M_>y7}yt1uoX-dWGeTRLF=@puq19C%2?AM4(E8B1DCdk~3Xy~x+tr+zoFWRh$d zHEtFTWgC3VbZ}V-pv#Dlu`V;A@y?Eps?pQ!UfRBrjL6n-bcAr!l#PIEt!hk#FOqfc zyBEW-vovHsJ%ECQvYxMUV(kD4V5a>zj>kMQ;8+vJ6(xhiJkd3$DyY<8g;XBGI`>thB@Pg^gxjzX=C-wpcuGoIDqkgbCv zz&1}{LdfV>C3j3_A2T#9+3@l45sF~EDoq_2*2__pHOF9_=R;3z`7Lt_NuVe6x8u|? z7b=JO&oO!~Tg1@9@s~QoclpYaa=KC4y4OrOlW5*G-}=fKmYB-znC{g>+fDq|vF?Qk z+d`TDy8C`72SY|EzO1A3Y*2|#xkSQ|MIsd|o_l}}Ctx?`a@WDKbB63@Un3<2^nLCF zAr!)&eFc{T?>ZP5cea~hK*!=%S(=h?pLuTGHzes7;{c&hRs!Sz zy#W1^9v@ngNiMK8x;MV`b?r%hiuLPGxm(=lLaOH?Pu|yHjObVDNwrzZYfFP)zJmlX z=)b+a83Afa0mVR8V*uj=GfRfEEg4K$JOp57VonVe42;ouJm%oV3+k zcizgtWCZAl<|PaAGt0EE^El>D%j$Ea8*6G=&9?fh1{-cvdB=9mYu&M~hd$D~to1K5 zkixN~QIkDZ^VFBV1~x_jT3>2yU^t$k-!N&Dxo6z2^F=Dwom|T50Z4dq@|e3lnHFOs zO+6LBGYt1O3^>vm0c|ELeP57&I>?i?Djv;Yo42uQK**J zxr9qSJ#ny}5#X+!Suq1PlF!xo_jS#+U&!w1>ET!F%zu*rwBk8YV|K)B3em4s2Bws{ zdW<&D(62MmY|pBzL$2#t3tNyCNVg5&2V^R?ai3VHikfAf+I#f(nxtkQP+=6&s z;FehrBM64-? znTE*E#*H0^dzyL99%)NO6N{v09Qa7*=1PDR4s!!-O*Q7S)ks4CBfT@OD+oYzy95|= zkS82-|3Iu8jY#Qbu7{&k6($WhXIiv{0Ar4FjIvr+)8~>Yi8aR?eGY%=&HG$^N^06X zOGgM{){7d=&WAYTIu0eT&UHuCR!@9TUti*s&Bh%8Dw2Z=08T8adYgsAfKU}Zl|ui( zD9w|!bFA4tqXFA2N@wBU5kN{5Bq+&>c;?Qrn{3rcQgq-Ij_QlrKy7M8v<%1N@sRm1 zr9`5IoHiWsLEQ0EF_f?&wjUFPupzeaj@P-E}TnBAQj3L>~t4mM+aUjcw$?E4DFRlCIGcbe)cr^Sl4a7Mt}#_tw=a=rb(akur0ms$J|tb zBMmwKA^;7xz#WLUTm(HDp(Dksm4+}8Aoj2h1Xn%1DV69iaENt|4QTcA?6pl|9P2b; zSzU@bO$jR_zOGSnpXqtBz08EN5r977T-WzUA0If2T#eD1rLw*Y`kZg0$m(EAo_hc} z;f_IIo3XBq4GwGz8CXG0;cN*&A&=F`8?l8tlOC7uk^uCXC-xx}7)_#-eTmLHjEUD(70!PnA&UYbyQ%DOM4rufHb zpe7lC&4X{vcEfn%z{z~XtL${2$9tUf1!o2$)wU%7JwRWFVMYK|6&&tq1ae@Sg4o(x z7PFG^{lY6$ButGl)OQotF<)vVmA${e%ej5bV|7eN6~UEMLv8*fKo$q>y1w^y+XNM+ zo}1Uxvt?0)Fy5#~@Jp7yG-NS`7A(o+pIDu0fXliON;0?aaDU9Thjn+BFbQC>N?A+x zlOv7c=>6^XTwwtRYC1!=uc-+00Bx=&2(mG%$qzLHVZYcl#8Shl-KI)90qR0kDSv%k zm;M!I+6d4PE-H4&<>y40#1X&7p9OAfVA)n4xNOys#bj5GH9j-qUF!^Gogu0EX5lrV zf2LzUO;YuFa?hJNa7%t4jmqu_`HqThg6;rjYo2tIwOI4ZQw!zMb`#SvPo+09pl>?W2yfm zS=_N&j;$Tie`%SBNXd&Kz7i}s;-{_61Ynm3yp7p=eG&Tmef%Q@s3nBEdQE9O(qdIY zpFo#V^m}HYF`=$*(1foqWsXMTmfW5w$6P0C{FF>61Qio<$I8F#0Wtxu>pIW#O3Oyr zmmL3ejO+(&T*ENnCjky5NjlESAaMVZ1FF|VV8*}*wk3ekucWsc3jHth^~i>PJ*#6% zE2E#S%Hlib+S+K$F;7HOlMZYTHx5`_Th}>!>UiLNUZ&lQW>boNuRAB4JI));%vG#S zFzrN9qBj3m%~01UXKQC&^LWx`!w7q%Ao-l>cx%!J7E zZLjkLX+wFom3>YTj=JVwV^``L zg`3mN!G@vVU_mgcs`&AklNeTro8vfWttDAwLPNGdHeTpwkTzx_@3EeM8NGX*2Y!?_ z`ODye&oZ9t`-R=xFE20Jz(fp@PSn~p6S8gYOyKVnMOg<$!Xm*SkWi0YdR#Fbk=ba` zfu1FFiEMoxI-ALkE6)tpjQ%SvmST8t&LvY)JnfTyH=0`gBmj9&5ttC$8l$u27l!Y3 zXA}kHm`Ja+o>=G-@;%R!mXEe-8?KNEZ0(q~Urb%Hl5lwV7IYf^jPG==dNDh52C5$y;f&LuAstbY~iOWb9++l}z47ZmN^9T$$F@^_HQ6v^D15AKI!+aiW>P%^hI5=FYDNj(M~C%|aaO3HNehLZ|Wn z!ldjY9gcfp$k_2}ZZ%acq_w8+Qm^CoXpaVb1|}+-(zZIy{&gH(!@xt!jigYMQk#kS zcrQE|B@uNDqg6AF^trwWw7@x7Q?s(vK@AmX6s~pfZPzn0RAVYm%RIk-{~rH%q=Ub= z1gMCD29hB}o-{22l$lsCmghdJ=lqkt;!eROZ8+LetIb7Mp`o^Jbv@^v-Li86;Q{0d zD5$v1dL&AW)qienHa}Zy;hnNqp=qcy*k#SE$^;nEmtgez`l2yMUtaH>nMO60ePLDl(VAoeJaI;%iMOt!iz8(PiJ$Y&KmU|;9_#B*WbGK?3EzC` zv72*J?oqYe4lgsMOmkBw@yF<$M^Sl+iU0jwV4Gt?Mr7vHH-4kaVou z3o{hVuo=Y7oKyO;(+9FHatLIO1oW62g0*XBV1?<+x@R|Pe#{sC8Nn_rN|7m%H3=Eg zKQwq}mY4a;i8l9zFdicyu61*%dA4kKveoD*|0V+H(=K2rc+JaX`|rP-(~)Nk%{|sEM90#gIx}b_YnI4J6J%-`C30cUPT2(&`mFQa zTYTuXdH^~Q65yEGy#omr!l9^^KB(2wu07Rn zmhM_d9TnjpKeIWID0Jib?b|mqY}6vTP9r+jfKP3*b{h?Hi-iMvG+KpR|B#!)QFli)(LVphDtFm4OlCJ`|p&tuIxJXinX%yvyYVJ zl_28J>^;?ihAA-NmF=c2Ec5Ug65xT8cOOVUk9DOx+uzb~hppB3hULVRuMvsAY&DU^ zm1z*4vhI|FO2fhmnu)p|Zby4Yp7(V>S{94hzlJnjf%9k3T;{<jt|NV%p!R<{2M0Tln_682Tv-O7j@DCvzRwE7Rc z?Lu;_>nrFwM!IFSNn`awS*%p5zR2zp>wWdbk5m*T+ZPeQ^jFu#{T-%VZT>rrClHM! z)Iy!JF>F9d>j(yBtZhWGmF-s420OFFx~$`b*^Y6P^^5fr{Tb_HwTu;^AV&p1^9|R! zv!ZZSn)vq zG3&q(PpxmYmG3nUhyZ0x#u3&=1BQ$F8i|PD=xgYe3&luZWS?YLSslw00+`{{e{+P; zZibIfM5=C*08(NUF+nODSQF0J+X!YjHuQ(+IQ-C4j5f!de73O9FTxoN3TlarZ8FY48H+3z%jN-en_K9uIaNm|I8UBvJ+_qt~UYP?V zz?0IGYqh>NoFK0NfM&uZLt$=3NBEXxaqfCV8t|^ZzK8sQLAIg4uI4{W??P@ZuGcuB zA@}&p1Jo3d5&G9n2t)$V?0w*PvtwNj)aRl?Gg`-b+=B=(;sqXPE(x%WEOk5EIWP)T z{AXcRTpSG(GDh+MnjOyzMktEweniWsAG>+0?2AMIQ%y(iRdA_0BOQ{_`kbvH5KKq% z)$9VzP+7wgRk)?PA@!P@S_;fR1$!X`vSu9XOM0x@miDZ&*BW*%1Q1-FTbF{>-gQj@ zZP9NCBa+lZsYhRk;67hI8Rf#tr-~&XmiOJ7rG~lE6URK|WJtw0BojdMyIUI2ZjG7L zFZ1;l%6h%5CvR)GDGprIks3s@c4$)!wKSZ^alFhEX9=A?Q(i=&(O3c$dIll_d#F5l z=;DcL2F75Nuo0jn^G{Y#cYM}`oU+2C_}AhA`g%NpnK6?By#K6-IrAR|#RXkiE6*J86JG@=rHtu@kI@gO^}$eePU zYmnk`6*G_7!;kJRA?4I+SuM-C8+AM^E~ zb%rQg4v3jX1KLh?`O~LQv~G{bL){mK#3;T?Q+y`+F9c)POy)4yV1Kz5ND3lR4em7s zQB)<$Sa?L<8%TOhb!YcZs%p$$hQNT3z(ogFF7qEZl=3zzI?!G!2F zXVLW|8$k5upvcfqz-0nlSkg?oKGF&walima^lzcSvs;X!Hvd|1OkK7hR8~NiuU41+ z6CuyJ6H<(Q%w0a2037W+=2=w7oUv&$Rm##*c9n#;Ba*CB+3E>4nE*9~3F<7bJaJC5 zZ6OfgYprL&K&0On24S++cFi>x$@H7obLZNK;0kw7Bpn#<(+&w+Mgx8}#Gu9ms)q#V zcpn>W0qr7}%3f=T*w#bj<-zi)b!|<96bymJ7>~J$tYHvE8klS!b1AzxV4RE)$jrY8 zP|`X8g1aM@ka2w=^P$Vk;gIlW+7l!6t9S9cY#iIq&$^EBC=*%gV@}0}rOP2=^!F@C zm{7i30_gE$HxVmkSO{UF?CH%E1G$TiXwt5cBCmDyY#hizXO4?>{W0^wB7j6=jc25h z*U8p3_SKhAzfMID4xBj0m=dPk%rw?DnAA1;ej!Nv@#6;vk+Kv-K->~9HEin`U>ngD zEaNk(m?5CYvlHsuZl%_>9=UL=8J%GhgW{TL2~$uR*Db``lDj+jXUBS1ym#UNWUC1Zt&ocZbL zWlaapZw%Y>3B_KLmkop=ufXdP1jL7-K}5ZfMPb~iyMh2GUY>AafI&6Mh{#orc_vEa z{Ti|^b%tAkJayU7uLjd3nJuVDW3c6MSu|j4t;Srv8w60sLIIvM_3Nl>iFoS@jE?dE z)I@Hj8l-?yT9HbK#jI?SK{z7;c)Nw#qJi{RcZGnESg(`{v*6gg*|BcusWaqwdwcsl zOS~M3F}K;#81+)@(Kg0!*5<8U6d>dQ=n72l*@WDdo-SDkJg%vmF4%0 z^J9(NsJktk2!=6-l!2&P%X=3rIIpV38sSA zd&Mu=nWz#HAcV#CP^lIIS@MBxGZ+m-5f7|mGXhY=8KBfzfFNFo^!fAWFJHcV`SL{s zApRamohcp|)2EM=Cy+(hx(G8LW1WzSo?bWy_L>V}G6CwGZz}6sB2R3SZ)@H{7oY2a z^|7l#rdAKCGvaL+K$o4_Gw?>$J;}W?_g_!HBxgK@JIEQHu4Nf4;0Q1&b1!yab>Mqj>CI1V0dm zgiIRV&6B&|Ft(BHuQP&g7*7ZN1QZ1o>R`q6#Yjo#GADwhtb(O@9RBhJC1bkTx?0<4BQep{E`{9kB^UVM**b80~poF0d-Q+7oqvP!o<*MUtj$|GLU9vSIh?F z{}KTif_zrKoloC}B2lhgF@I>bIi71d5KD$sc=N4|keM7ag3lc{L0Jx<&$YBvjYvW~ zW%NWJ+uS$TF%%XD)RMUC#Dew%g?R|FrKSm8_QedA38!M60Xssu^*KLqrBNuo?sZ*f z!`linK3H!-=DzGgptcrWLy6?*#ZdkP#0`h+5!qXw7>6leT{%{d{76fEGW0J5)<(a! zOEKl~cW$0Fb*zrpz|m)%oe?7fMAUw*iw><}Tl8FOA|*FK6pCN2xm3}@p^RWkK7-A) zY)+f{DhN1D*L^J&qpVyWbHeJ}0_eFii~w204PjO9J<`VV%OaA+C$ys`yRjZ#SyOcT zL?RbX63#s7>++-=0$JFjE>kzwenS8iW`5P|mN>SRx$Kk-q5j*D1%7#X8Q86ndBS$8 z1{pH4(J)H3m$@*3g_5Z|dwN&-_9->z>r1J-N?Bz=i2!@2<6lo~IV5bw}$gJ9Oyu#%qW&+JvRiT;tM2%m7E zB&$5&{UpW{$8omSKJY#{U1^YFkG7h%!mgEc3d=DQ!5RI1w=#fz9IGQTOiJAu`k4m$ zv+g{AMBV1x->>5d_+V42MldFHj&;s;MH*3f%=J7XK$`(0+Nr(VY24f|52OU%8dMy4KdD zQ<(&4X@C(`35C{c_EEN}o*t!9ff=qlA6bwRw6HVJ)QQ`ZrNJ#M58ch)tb zzt3H{A^^2^t>-tI4Q8(^RvD{Pi~>mA>@aojonA}`ZJzsbe*ga6U?JQeY2%st*5(=` zPV#foyRYwTqHyb+mpQQ@S#u>O?rdw@d|RtE={X`z3T6whb&RV%#-GGlnXzw$bu`eI z)#L==s8M_L11rghErZ%I*X>z?wIXKd>tt46qh!%TY`o@D94aWf&@d{aNKNLlYf_Cm z(x?BFOtxlQRq?wiJ>PEDs;quVUsTxTj@9PppMU--DYJ@W?jtTco7(0~XC}Zg4>?lP zsYnuxi-fhvggnfayUx(lE~qeLTUi+Tr5oB3(wn`I%^*OxT&=6U5yB+;w$5CdE{Upw zkbnd@QlWOqD{`P?r;8Y97OJh&EV+KO&;^l#YM>)E3(X(_Gx(nzP>|*V_ulqwuJ@ygI|8jb%RX$sFcAoXNfjhP8B&KM@hE_Sf)c7C4sn~5_4Z|ge6kl)SV$@%n^D!HVl?&qb;~7GhB=suIoB~ z|NZxd@l(8#tzt6YL`(t*!CL4m5Z7c2sbH-Z%*@g7$hxZAY47d7Wi=rc9zeI74h($9 z+@mPaoAQhUghfdPY#{d7I*kIqLv3y;8!ot`^ZCSl7bXgAcVvk^rJX zHi3evNI2#gx39_KEU~(pe`}%YCy`7wB$aN|<8(beK-t+QA}tSI>vX3DUhZX{71HOd zR!@=kb`!Q>`FK3eA3uKdIeIwH^J6_?iAGnSV+}|s;)2M8;?6=>Z{=as&jW|EX8lzd zeuJPrh>avD$pO92jyBKO9aC%F zE&(9pM+y@yI41Hk3fb*!z>c}$Lte##1mo3Ky9Ec=PM>Fp354ZAn8t?xtm0)1#ekdbgV`N%c31GCmQ}+MRpQl4#sc>1Cpip3j`}*2Lvtf6dGn^6bQTef35+~J~rm4}2@l7U1 z{xS2!w4!b{LB$6;7|*l(Bk%EeBLOl1LpdTvI#w zXo9TIu-cHH!0&~Ir_WUQm;Oc$nW6R#OTnSTviIRz1QT5{>}cyJJG z*vnYb1qA$=rAa3s^M4>0R%RM>U>Oz-`4;^WbQZCRo5X1AFrciq@QDWy2Z%7bv2+A;F?C z%Dt_x8&VA!G*PVD42#?a0|y_GTU*z$)4*WeWS&KrIg>lCUewhzZp($)C@QF|hRLjc zd>Jq?C6Qn4H^G|Ri~x*($N?TCK>{2&z|TUUvHD&HyPx4z8VHIAD)+d#G+o`@&gn!m&6L zS6*|o!B|i8<`cKJ-#h?~GA+^L@rZLywQiuo$d+V5h@XxO(sfU|Y7(ugUJpG>Qfa>K@oH!W%OnYTAlWSCe_*oW^kz zyKkcoI^JWQOe6&PB}ql$S7B1|F9wG4>VcJcYF%Z_8gpahM$)>kC z6;Rf#6oLM@^13-ZMw+rNsQe_rZ@>LU0>nvX#so`96&zg7!EyG*l!9rrt_G%K@Jjn6 zC6OM+5H*ajsL6l{3iQ!6#puMSxM2_pmG_&(qUz~uq55Sz8$#jCgl#dqv$g#e^T-dF zUf4n7FjXVOY?+grYPRWEk0pIV02>uF#ABW77r>UsJd#mqNfJPyVhz;D`Okm;li`0o44M~p$%kowGvia$0&AVU400JyJbS=KuM0Ttp1KBP#|b?DGvV|WT<#q zfgaH?V?EYVP}G-@_=RIMjQ}Us_gnbO(0Qy5R_K4scf)-D{yjePduv#-vl3P+wzN}> zX3?H-pv~0>V=m3Fb5Yu{u561E7Ykq|MOz(N2@URpE)6A&NsjTql&5dpGy+Db2qLI2LQ(ZFSYa$sZ1InRku?`Y#i z00lql>4h!SvLIzmuwLud0*REAhzE590_S{JWWfs)&VT*uUyR0>6=iT%)A+UEq;?r3 zCg3idOjhSRn=()g?paA0`s(%;`gdxh&Wr%jJEFf%r)k11t1B=LY@3>UbQk|H6?m-6 zcZCTxTUb%>Ljqju;(NB!3j37_P(bFs7UMw0@-RBs6AOM@S|}j%&mQSdi?M_7=7Ovv zx;`^mmo>a%;{5vctLeZZQ8uEkDTqM)HP3sx@EW-X-chByj`R|Mvbu$>eKHji1oq#$ z1`OF^X_R87vCcOQQg#EoWBc4fZf4BB6vV7|sG^=EUK8F%(e*XM< zI|#GkOC~_a3ax_qIVGVx1|?BX-^KU2-MR1@Gq)wNoCMoitZbF*^Z*q1z}Yy`gnrL$ zW5aq1zVEtej+>=oaBqMUz3n(_X8OhL426+gmhmJDpS7vMYF_T3h)u)V))lX8m~58% zxFvwPY+ikfs0v>#93JcW2B$Lp_Sx3KdnQ0x1FVjr5_O=~x4BW8M#6wTunn9b(|?I4 zBL=nGk)kojt>4*&Ywo{M^k1e2AOWZn`icy!k-~;dgKZ()i40cAA*qc`%`TEctgygL zY(Zm6Cp{X@jIowWG6&{2EF-klm+)=UJCII|-ybM>9MZ5Ggl*O!w$Ed{)a75H4vPWZ z^g)P>HQJ^o`pnL@c?wr{SVk(f{t3>gHe(2DxU<38_(e0W^@u37oW;yi!|DlEYhsaM zizl`jP#FYs%Sm9H)3svbdkJ~0QDT0U3CENoMU>2X@tN8&g2_F$Vxt zLHvF_S@k4*eGrZfs0VPSRSK zIY0ok6oyIEeeObR)3MhXUgua^pDktj$7=YgR<^CL>sfL>L--^I)MnzAUuvztmRuA4 zCM*-mm|-qkL+?xi47>?1I{|Wlx;f@cUJYs{j%?n_YDh8%GK+*ZI)SlfA?N{&oOd2z zU_q1~O@kEwYU{L`Xrrn$(!GPe3Dy9eivcTNPw0#ksS;<>os6A9-{Ol*fWE$phJrFR zkpMlFvGV{U+1Z-PN%WgZBc!b7CCxDz`bB`ALLjqMY>h-f*jcNrZ7gOs3|RIH1!M@& zEs6%o0lJ0UBz7zRvY>f`tUwW&`W$<+H3P zG?J5wsOzAX2$pQ+FPKDo{tL&@)5r&gfd%ny!vz za6K&tKhJYJgwI;ZKv9d$Y-CDgX69Jg1XnRD8Fxjhn8u#p4Yd^XfN7W9TRQF8N?lWd zQsjk&Zo<8-cJ3*ptgv5{OhqoJ&M@r2QcY`NHs|eTXUP)}U>5ccOJ>dsUL&O2`Oqx~ z8ur8pHd2kcc4GC>nKe<@u^@G+sz=HNnM9%pUVR?AcxSy-Ey0xGa?Im{a+4%Set)D_ zK1yU}Y@|GiH77j@eLccV*MO5`wRKunO$?cJWQ7%5*mBtOSl{3zamhf`)mNJy)wZ(E zXJ>Ph(M%vx-NN6oojRZ=4rA<#8*8@bw_S=zdmwp+W$qMnTO z{sQ(#auHrzYdMNlXYL3<8XR-Mw{=GC?8twOb*-39p_>P2>y%Agv(5Umky&kOd0ctS z<0(ri=XsWOX~2o~?yC91$=&i@CNa@K&#kMU*~+k_AT8rwjcF;1e_%CRCV=ejG0&pf z2K@!`A#tB0XIhYo;nowGmpS0-YnUFy$;xjOp0d<%)rM4o6s^*g2IvugM^-DP3fU*mmM)GMQ+n8DVvAPsB za*T0O!E}5U!lDVB=(cqC_%KWPZr z9tQe`{v7>ZYwTwM2~n#~QGkYl$9#c+2tXB^J|j{%sbFx`(i z&>mwv9uJxjmTSHt$F#)`h@Ig{L=Wt&i8 zlc7Ps!V}UBX6O@4x$j#|iKPSC5{pu{9>AP{#YO5nJ%FMAkv7hoKR0rcOLBAqSoE=D zS*Vzh)osYpQ)oEax+X2I@eoKFGFw;?evEX+NlR&C^8jNW{Lewvmey3T%1CS3^=DmY z4mrNCTf^tM-)MB;e3UH#GA;$g>n7~E)-al&m+~m~w!Y9# zqPynXPlOm%Ti5iF6$+WAN?O=TObzSvJy#V*+KO~Um0f8JU^Y&Yf6f8xi-DeH;{giH z%o71wy_o}JHvp%H&HlF_zAA_o_$M1s;h^pS^gs*0EDAMx_npwBUsm@C2yx(v0^0hL zTAI&mt{)!j20uf;wcI$szEhpYZp=pIUKsqa@mpxJJI6X3(AOa^&A-Ihb^|9pg3sD| z0QF9|*X^>}V`tqDw!(@;kZFkBFPMcOAhxEct*4v1&0rK@V zv5-w{Ni?9i%~_KJ=Q?vPJRNiU)in>D=0i<|*IIJhOmJ#mboTZ2bqnZxd&5l1vCHk2 z$q=3{OmOr$Y0V^+`2mwERa?^n3hG;TZTl{@mgMK}n7~e{r)|#SH5@J<9h5mEyRy*~ z*vymkb)SYbWu>jlsMyCWiYFZSIgsBzW6U=r)paP-*HB^01U}E8BN`Y78eT;s*=0j= zt+^2rz!nZjngz`4b3_<5)S0nS$eyz|xxox?6ymETWkyPQ)dMYMzgh8ShL9>G`ulpG z%`6!r=kh zIzgVnF|CxI+pz3M@USo|v|| zm&`7^R|F_GPT-jD6dfryZBjByWLBTwzkk>BM1YTvkBDC*BQ7ZL=11D5ttDKBKe4&5 zCYeR@WsA#hC*c)qbk5!2gc9gv3zG z_$1rutwm6iBpk(Q*^uY{OmlChickvWqp z>pCDFs|VmyXmrkR-@eH1@zzopvd6b!1NwyxBPk zV#_x!>mMkOx%gR5ps(va3v%`a<5ayD=kw>!BtXM*9STPT(2Ep!@xXf$tcCo=6mJf5 ztp57Rce5j94Vn1#xZs$pbPpVOK_^TA^|{4jtfO1IjPkejCS-L_PCNf;m#I^2oevcU z+By_g-%SWKqXg1%9Ow7%-vuUxt#5B{v_>6os8n5M`+uPDa9lxf%n8>_`hgXu)>iW~ z`Rxz7{ek^o<^hg*-ajR)o(A;4eEIU_%a?dPlumLj*nlSC&|~n0o&riwrrl6JQe@Is zt1o9*)|iTL$z(7)Vpmqgdq;Z7x$-vVenkUw5!uyTII7y#vG&yq-4)V+&8C^(GKbzQ zORwYIN{{(=;rI9VFk3$faLtnl&UIsyYKg1WRYPZfNy#If4jq-`RJXuUF(aFyucs)) zr*JzKKidKM@&ICEL7qOK|Jy9#1h%_X7&7sNg2t9;e*on%&xahy(i$L4qfc;bTHoHD zKg+a;<_60;wy|Lh$#czZ%5@z!lr_ATS(FM4McXKD8v+Qmyr!n1u$6{{tO-y6%kkdH zeNuI<2^%mE8lEbC=!jV_tY2poMEr@G=Xo;WtvKw!Zg-(ySkHl0P8X^rB*2BuC=#FA z^YZfY>C>k`|3CimkFQ_9e*OB@2tdnS=5i)+fNA~^x3HpT5ggX$jMOJ+$Z+2}5Mu(N z7L7dS#_*cbac!M#)l;@6+@g*GlADFnWoBSdS@N4>kx&%iw5!i zd|*#g#fUqE^6~Kz4xu4ML$iJ74P^Wz{konD^gssiz=rqueT(}{07ctI#Sgq8qT(%u zB11U32>rwM2M4}<`62?aW^)23PIgf6(9@9w0}-87MG!nezj1&-Gza)R%%BOA95?_t z(jIm?WU|+ASrDZRtZt(Gr2;)YzSBThK$TqwIlu<=^$<9HZV6zFsBROkW9Jm-T&R|+?Mog5|N=@34!u`3fm^q`c*cxm0<469hk2%rb`bw$&58u(5) zeH{Qi$GvfbwUGmTEqt!kY>%kx*q1|FqF;}`))~f*$d-lIo5?t^{ok$}b2_=D=`*U2 zPst!=-|LzQH4co`4%S*vO1b>in;r6>cghxG%DNF@OMp68fEoev*f$eE2r$PY|67vd zJJMT;EW005S7mPc*=m#n-?BQ!o&p}jZbpBm0e>+LjGf6J$zJl);I8%`nCdozsz>*A z#@YnSVKGH9*67zl^D-y$3IcR?)}Eqg5yW*J7VCDQpN-Kkao79%`_C}PNKBPv%VFQ` z8dDM(xuuFYAlZ=>2KW36;bn|6TT4APtOqne*lO*8F+;8O!a;X;=p^pV@EcyY0ypKA zogdhOzTC{ts{XcHi%#_CVG@mKUt=NS+X|aaX^-TW`pnBQ0Y!xLby;Xd{A1{+h-ylp zk&u#AYb_AyhZ22~-W|CUy-ZRM7)skO>n{#wtdJVthl^l=6Gja*9d3GA~qOQH-9ppfJ5;C>7D zY@(ht^^OMQ!@y?9sIA@PF{0!cFWdet8nU=@d44Z-#Ez8J1K8eQTDmCt5m{>nO<_?` zDTzqzqfpdm(0inXF!?DZnF-3%K5KFUw1(H*j}e$T&-unYNy_|V?u_-v&`+W8`nnp< zD3A4A#Eww@ffX`$#Vl^WNgdF-*LfUTCi%9t{DoreYvQ7>Vc52vgqMktzq1Qg#_Gq7 z;cYEcO~cB(bGJ>ID9^Yz^s_HSzf6WTJ`0uvc+4Hx7HIta!kSH4R$K1NsS`mSk4KrQ zZcFgl^R{-v%x7B{_nWIV#7K_%PYNkE^`n9+InIk&8@J=KWSWYxz_!zYM7MX=D=4^H!{dh z+W<`8&5+-b+)S9RDXYO1NGgn7l=JQFt+n>?@o~-rTq8wj>w!zM6WN{-TVst%*;XRv zF(&~UJiv4FNlch%?yfX3$sBT>A6upR&8V|}cE4jX?t%FYyHTwo-0Mx?VY(#rCHw)u zy@f@EyJ+x%1@l%$LiXj(-)14JdGR3js9}g=+#X{n7x#EPA|2Q9ezZFR{AETYSfB zuXiOOo5xt6iql!h@U2S4WRpET@ewDR`$w#8hQ3jvyK8y!8&DU^9j(_s&>Y!-VevhtShFUM)8vlLHzSM$Fyk zZtNrN$cgYF_913tr$=lpixmb%N6LCr2)~x{npW(QWoJj97??~d)@g_oKG+Pi<>O{( z%Ri4bova5jk6}2D7SgnfnHB&%=2@_mzDc$uJECjUslHAi5Ju|AShpWAB~4;S3tMX+ zA0KMlwM!vv)lpH%0pp=*kiSUC>Q0{<|2vlAhH2l@L!t{q+%bqU0*}A)u5FElL@GHS zs!0v@m*kbzlJ#{F#S`@3mCWE=GWunK+M3KJ=4e7lcX5VLzMDvvxC#0UeG$OS|2Fxc zE|}S-!c3m(a$RRIXgiOz8CQn?!fQbuSl@nUysR;_Cj3R6V((~N1~NY)0Aoeifzf%)4Iu=&9(Q1OxOyrxX9S4Srt{3Qtve5(b-p^i#?t!H z&Qq-%>ug1a`?loHTamu|+*nMLkTp?OKTu%!>DNdAeUC2^(1mO_McJ`)C4M1pxc>BR z1k7HjT0L4S8FR%%MxNnP64=Uw=B=(y@=AwtMuSNJ^?KaI55zsebj)Lvq?!VsJl0ZI zvvSQfa~%ozC>?|Ku^Pt$b6L|gxdBf<-gyAo4m+ZcL_H(#L1$Fqg{4Sq>qrZOC1vTr z2v8B#ScH1V0jkH)&t-i4udGyGmz$e;wl-%cpeQ1bfF*RZUK#xc_mToa15ifQof$Iu z6XooP*->$TN-^B)3wvjTAwWB(J58|amqj%_1!iT9IJO>O>^Qs?4z)l(Cd|a`5jXxM zz?cVrv);@B62J`7SmQrUWSDkqt&xGY5QyzI0<`;LwqJ3`m>#pNWh+f97bdW-bq4fW zr)Fpx)J;Apf2r%j2i}`mVb}1kZFjaEd4e8Ec&z&j^@X=njJm5}SYKD;Vq$0Iqza)g zM&)s^^+NY%WLn7#r`CG!KMA0&9&_uo?r)g2p#`#GwRFJfnayoTZW#L6+>*?{X~jxO z=I8H#!)%ht_YRcQW!c&Fzbs?jt;a8S&9+}8fBh?4%DeyCm36h{`thziTO&2n9-8g< zt>V<>zJ{X~a9Uw|#+rxC*JQ2Pjb{uHk9E&-g(^<~S*GmdF<%M4QF8~d7d=m`9JN`Ca-&mTX21OWsE z^+c34on7<%h+{Xoko8w!W1jFbE5I}~62DC)`s`^YiyMn`qSI*b94jNZLU01Du#308ncaL zu&y*0mPMM|Fm8PQmEKqrk2t@7{~ql)@p{veHU}4wFD^LN8Rl(K6HU;pXN$8;1NE(@ z*Z!#V_2lsnoY$)}LvyMpr}>E?qC_o>Uf5iOfrcH_HOKB`S%VHo^Tc{tZ9!kpqrKL& zdQDM*!9@}_eeq9g#)V@6O0q{CivLkWvPXc`V z_DwY9B5W#*H(&F#RFjmL9hH=sACROPrj1$(oXYAAve6RyGgazzf@S6|E}Y%_eHNY= z_t=$d9kmll0v18TX?9|TtzrqY$C(P#aZ3q15@4)eR3!hvF?edH!q<#c{h~(ZrdI4P zQyT`BOHp5{v*R%OvMvP5#p=(tV61OGH@&N!6o@VeH+5mrYn?f9naB{}`R&^`we|J& zRf5*2KwTObU75Vp�lygP^HhS-882{U|j5Cf_= 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%0DEnfc<>Lgq^plY%O@V4u5D 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
mm4t8o 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

vZFOq#@U*gl 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

+ - - - - + + + + @@ -71,6 +72,7 @@
+ @@ -164,6 +166,21 @@ + + + GLM 0.9.3 is making progress which is illustrated by the release of this first alpha. + + + + + + GLM 0.9.3.A (zip) + GLM 0.9.3.A (7z) + Submit a bug report + GLM 0.9.3 Manual + GLM 0.9.3 API + + This revision fixes two problems: First, it adds all matrix products for all possible combinations of none-squared matrices. Thanks to Grant James who has provide the code for that. diff --git a/readme.txt b/readme.txt index 51527db9..d5abdae8 100644 --- a/readme.txt +++ b/readme.txt @@ -37,7 +37,7 @@ More informations in GLM manual: http://glm.g-truc.net/glm-0.9.3.pdf ================================================================================ -GLM 0.9.3.0: 2011-XX-XX +GLM 0.9.3.A: 2011-11-11 -------------------------------------------------------------------------------- - Improved doxygen documentation - Promoted GLM_GTC_noise extension: simplex, perlin, periodic noise functions

v%LM{|)j`^PsjH;zqY=QGo2 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 b@Lrd6CYs6wZ*@@%g>e}