namespace hr { typedef unsigned color_t; typedef unsigned long long flagtype; #define Flag(i) (flagtype(1ull< distlimit; // bitrunc, non-bitrunc eVariation default_variation; }; static const flagtype qBOUNDED = 1; static const flagtype qANYQ = 2; static const flagtype qNONORIENTABLE = 4; static const flagtype qSMALL = 8; static const flagtype qFIELD = 16; static const flagtype qDOCKS = 32; static const flagtype qZEBRA = 64; static const flagtype qELLIPTIC = 128; static const flagtype qBINARY = 256; // note: dnext assumes that x&7 equals 7 static const int SEE_ALL = 50; static const int FORBIDDEN = -1; extern eGeometry geometry; extern eVariation variation; extern std::vector ginf; extern monstertype minf[motypes]; extern itemtype iinf[ittypes]; extern const landtype linf[landtypes]; extern color_t floorcolors[landtypes]; enum cpatterntype { cpFootball, cpThree, cpChess, cpSingle, cpSingleSym, cpOddEven, cpLarge, cpZebra, cpUnknown }; struct landtacinfo { eLand l; int tries, multiplier; }; enum eModel { mdDisk, mdHalfplane, mdBand, mdPolygonal, mdFormula, mdEquidistant, mdEquiarea, mdBall, mdHyperboloid, mdHemisphere, mdBandEquidistant, mdBandEquiarea, mdSinusoidal, mdTwoPoint, mdFisheye, mdJoukowsky, mdJoukowskyInverted, mdRotatedHyperboles, mdSpiral, mdPerspective, mdEquivolume, mdGUARD, mdUnchanged, mdHyperboloidFlat, mdPolynomial }; typedef unsigned long long flagtype; namespace mf { static const flagtype azimuthal = 1; static const flagtype band = 2 + 512; static const flagtype equiarea = 4; static const flagtype equidistant = 8; static const flagtype conformal = 16; static const flagtype euc_boring = 32; static const flagtype space = 64; static const flagtype hyper_only = 128; static const flagtype hyper_or_torus = 256; static const flagtype quasiband = 512; static const flagtype equivolume = 1024; }; struct modelinfo { const char *name_hyperbolic; const char *name_euclidean; const char *name_spherical; flagtype flags; int is_azimuthal; int is_band; int is_equiarea; int is_equidistant; int is_conformal; const char* name; }; extern const modelinfo models[int(mdPolynomial)+1]; }