HyperRogue  11.3d
game/visualization engine based on non-Euclidean geometry
Classes | Namespaces | Enumerations | Functions | Variables
screenshot.cpp File Reference

screenshots, SVG format, animations, start animations More...

#include "hyper.h"

Classes

struct  hr::anims::animated_parameter
 
struct  hr::startanims::startanim
 

Namespaces

 hr
 

Enumerations

enum  eMovementAnimation {
  maNone, maTranslation, maRotation, maCircle,
  maParabolic, maTranslationRotation
}
 

Functions

void hr::shot::default_screenshot_content ()
 
ld hr::svg::cta (color_t col)
 
bool hr::svg::invisible (color_t col)
 
void hr::svg::fixgamma (unsigned int &color)
 
const char * hr::svg::coord (int val)
 
char * hr::svg::stylestr (color_t fill, color_t stroke, ld width=1)
 
EX void hr::svg::circle (int x, int y, int size, color_t col, color_t fillcol, double linewidth)
 
void hr::svg::startstring ()
 
void hr::svg::stopstring ()
 
EX void hr::svg::text (int x, int y, int size, const string &str, bool frame, color_t col, int align)
 
EX void hr::svg::polygon (int *polyx, int *polyy, int polyi, color_t col, color_t outline, double linewidth)
 
EX void hr::svg::render (const string &fname, const function< void()> &what IS(shot::default_screenshot_content))
 
int hr::svg::read_args ()
 
void hr::IMAGESAVE (SDL_Surface *s, const char *fname)
 
void hr::shot::set_shotx ()
 
void hr::shot::postprocess (string fname, SDL_Surface *sdark, SDL_Surface *sbright)
 
EX void hr::shot::take (string fname, const function< void()> &what IS(default_screenshot_content))
 
int hr::shot::png_read_args ()
 
EX void hr::shot::menu ()
 
EX void hr::anims::moved ()
 
EX void hr::anims::deanimate (ld &x)
 
EX void hr::anims::get_parameter_animation (ld &x, string &s)
 
EX void hr::anims::animate_parameter (ld &x, string f, const reaction_t &r)
 
void hr::anims::apply_animated_parameters ()
 
EX void hr::anims::reflect_view ()
 
EX void hr::anims::apply ()
 
EX void hr::anims::rollback ()
 
void hr::anims::display_animation ()
 
void hr::anims::animator (string caption, ld &param, char key)
 
void hr::anims::list_animated_parameters ()
 
EX void hr::anims::show ()
 
int hr::anims::readArgs ()
 
EX bool hr::anims::any_animation ()
 
EX bool hr::anims::any_on ()
 
EX bool hr::anims::center_music ()
 
void hr::startanims::explorable (reaction_t ee)
 
void hr::startanims::no_init ()
 
void hr::startanims::draw_ghost (const transmatrix V, int id)
 
EX void hr::startanims::pick ()
 
EX void hr::startanims::display ()
 
EX void hr::startanims::explore ()
 

Variables

bool hr::hide_hud = true
 
fhstream hr::svg::f
 
EX bool hr::svg::in = false
 
int hr::svg::svgsize
 
EX int hr::svg::divby = 10
 
EX string hr::svg::link
 
string hr::svg::font = "Times"
 
ld hr::svg::text_width_multiplier = 1/40.
 
int hr::svg::min_text = 3
 
auto hr::svg::ah = addHook(hooks_args, 0, read_args)
 
purehookset hr::shot::hooks_hqshot
 
EX int hr::shot::shotx = 2000
 
EX int hr::shot::shoty = 2000
 
EX bool hr::shot::make_svg = false
 
EX bool hr::shot::transparent = true
 
EX ld hr::shot::gamma = 1
 
EX int hr::shot::shotformat = -1
 
EX string hr::shot::caption
 
EX ld hr::shot::fade = 1
 
EX int hr::shot::shot_aa = 1
 
EX purehookset hr::shot::hooks_take
 
auto hr::shot::ah_png = addHook(hooks_args, 0, png_read_args)
 
eMovementAnimation hr::anims::ma
 
EX ld hr::anims::shift_angle
 
EX ld hr::anims::movement_angle
 
EX ld hr::anims::normal_angle = 90
 
EX ld hr::anims::period = 10000
 
EX int hr::anims::noframes = 30
 
EX ld hr::anims::cycle_length = 2 * M_PI
 
EX ld hr::anims::parabolic_length = 1
 
EX ld hr::anims::skiprope_rotation
 
int hr::anims::lastticks
 
int hr::anims::bak_turncount
 
EX ld hr::anims::rug_rotation1
 
EX ld hr::anims::rug_rotation2
 
EX ld hr::anims::ballangle_rotation
 
EX ld hr::anims::env_ocean
 
EX ld hr::anims::env_volcano
 
EX bool hr::anims::env_shmup
 
EX ld hr::anims::rug_angle
 
cell * hr::anims::rotation_center
 
transmatrix hr::anims::rotation_center_View
 
color_t hr::anims::circle_display_color = 0x00FF00FF
 
EX ld hr::anims::circle_radius = acosh(2.)
 
EX ld hr::anims::circle_spins = 1
 
vector< animated_parameter > hr::anims::aps
 
int hr::anims::ap_changes
 
bool hr::anims::needs_highqual
 
bool hr::anims::joukowsky_anim
 
bool hr::anims::clearup
 
EX purehookset hr::anims::hooks_anim
 
EX ld hr::anims::a
 
EX ld hr::anims::b
 
ld hr::anims::animation_period
 
auto hr::anims::animhook
 
int hr::startanims::ticks_start = 0
 
const int hr::startanims::EXPLORE_START_ANIMATION = 2003
 
reaction_t hr::startanims::exploration
 
startanim hr::startanims::null_animation { "", no_init, [] { gamescreen(2); }}
 
startanim hr::startanims::joukowsky
 
startanim hr::startanims::bandspin
 
startanim hr::startanims::perspective
 
startanim hr::startanims::rug
 
startanim hr::startanims::spin_around
 
reaction_t hr::startanims::add_to_frame
 
startanim hr::startanims::row_of_ghosts
 
startanim hr::startanims::army_of_ghosts
 
startanim hr::startanims::ghost_spiral
 
startanim hr::startanims::fib_ghosts
 
startanim hr::startanims::fpp
 
EX startanim * hr::startanims::current = &null_animation
 
auto hr::startanims::sanimhook = addHook(hooks_frame, 100, []() { if(add_to_frame) add_to_frame(); })
 

Detailed Description

screenshots, SVG format, animations, start animations

Variable Documentation

◆ animhook

auto hr::anims::animhook
Initial value:
= addHook(hooks_frame, 100, display_animation)
+ addHook(hooks_args, 100, readArgs)

◆ joukowsky

startanim hr::startanims::joukowsky
Initial value:
{ "Joukowsky transform", no_init, [] {
dynamicval<eModel> dm(pmodel, mdJoukowskyInverted);
dynamicval<ld> dt(models::model_orientation, ticks / 25.);
dynamicval<int> dv(vid.use_smart_range, 2);
dynamicval<ld> ds(vid.scale, 1/4.);
models::configure();
dynamicval<color_t> dc(ringcolor, 0);
gamescreen(2);
explorable([] { pmodel = mdJoukowskyInverted; pushScreen(models::model_menu); });
}}

◆ bandspin

startanim hr::startanims::bandspin
Initial value:
{ "spinning in the band model", no_init, [] {
dynamicval<eModel> dm(pmodel, mdBand);
dynamicval<ld> dt(models::model_orientation, ticks / 25.);
dynamicval<int> dv(vid.use_smart_range, 2);
models::configure();
gamescreen(2);
explorable([] { pmodel = mdJoukowskyInverted; pushScreen(models::model_menu); });
}}

◆ perspective

startanim hr::startanims::perspective
Initial value:
{ "projection distance", no_init, [] {
ld x = sin(ticks / 1500.);
x += 1;
x /= 2;
x *= 1.5;
x = tan(x);
dynamicval<ld> da(vid.alpha, x);
dynamicval<ld> ds(vid.scale, (1+x)/2);
calcparam();
gamescreen(2);
explorable(projectionDialog);
}}

◆ rug

startanim hr::startanims::rug
Initial value:
{ "Hypersian Rug", [] {
if(!CAP_RUG) { pick(); return; }
rug::init(), rug::rugged = false; }, [] {
dynamicval<bool> b(rug::rugged, true);
rug::physics();
rug::apply_rotation(cspin(1, 2, ticks / 3000.));
gamescreen(2);
rug::apply_rotation(cspin(1, 2, -ticks / 3000.));
if(!rug::rugged) current = &null_animation;
explorable([] { rug::rugged = true; pushScreen(rug::show); });
}}

◆ spin_around

startanim hr::startanims::spin_around
Initial value:
{ "spinning around", no_init, [] {
dynamicval<ld> da(vid.alpha, 999);
dynamicval<ld> ds(vid.scale, 500);
ld alpha = 2 * M_PI * ticks / 10000.;
ld circle_radius = acosh(2.);
dynamicval<transmatrix> dv(View, spin(-cos_auto(circle_radius)*alpha) * xpush(circle_radius) * spin(alpha) * View);
gamescreen(2);
}}

◆ row_of_ghosts

startanim hr::startanims::row_of_ghosts
Initial value:
{ "row of ghosts", no_init, [] {
dynamicval<reaction_t> r(add_to_frame, [] {
int t = ticks/400;
ld mod = (ticks-t*400)/400.;
for(int x=-25; x<=25; x++)
for(int y=-25; y<=25; y++) {
ld ay = (y + mod)/5.;
draw_ghost(xpush(x/5.) * spin(M_PI/2) * xpush(ay), int(y-t));
}
});
dynamicval<bool> rd(mapeditor::drawplayer, false);
gamescreen(2);
}}

◆ army_of_ghosts

startanim hr::startanims::army_of_ghosts
Initial value:
{ "army of ghosts", no_init, [] {
dynamicval<bool> rd(mapeditor::drawplayer, false);
dynamicval<reaction_t> r(add_to_frame, [] {
int tt = ticks - ticks_start + 1200;
int t = tt/400;
ld mod = (tt-t*400)/400.;
for(int x=-12; x<=12; x++) {
ld ax = x/4.;
transmatrix T = spin(-M_PI/2) * xpush(ax) * spin(M_PI/2);
for(int y=0;; y++) {
ld ay = (mod - y)/4.;
transmatrix U = spin(M_PI/2) * xpush(ay / cosh(ax)) * T;
if(!in_smart_range(U)) break;
draw_ghost(U, (-y - t));
if(y) {
ay = (mod + y)/4.;
transmatrix U = spin(M_PI/2) * xpush(ay / cosh(ax)) * T;
draw_ghost(U, (y - t));
}
}
}
});
gamescreen(2);
}}

◆ ghost_spiral

startanim hr::startanims::ghost_spiral
Initial value:
{ "ghost spiral", no_init, [] {
dynamicval<reaction_t> r(add_to_frame, [] {
ld t = (ticks - ticks_start - 2000) / 150000.;
for(ld i=3; i<=40; i++) {
draw_ghost(spin(t * i * 2 * M_PI) * xpush(asinh(15. / i)) * spin(M_PI/2), 1);
}
});
gamescreen(2);
}}

◆ fib_ghosts

startanim hr::startanims::fib_ghosts
Initial value:
{ "Fibonacci ghosts", no_init, [] {
dynamicval<bool> rd(mapeditor::drawplayer, false);
dynamicval<reaction_t> r(add_to_frame, [] {
ld phase = (ticks - ticks_start - 2000) / 1000.;
for(int i=0; i<=500; i++) {
ld step = M_PI * (3 - sqrt(5));
ld density = 0.01;
ld area = 1 + (i+.5) * density;
ld r = acosh(area);
ld length = sinh(r);
transmatrix T = spin(i * step + phase / length) * xpush(r) * spin(M_PI/2);
draw_ghost(T, i);
}
});
gamescreen(2);
}}

◆ fpp

startanim hr::startanims::fpp
Initial value:
{ "first-person perspective", no_init, [] {
if(MAXMDIM == 3) { current = &null_animation; return; }
geom3::switch_fpp();
View = cspin(0, 2, ticks / 5000.) * View;
gamescreen(2);
View = cspin(0, 2, -ticks / 5000.) * View;
geom3::switch_fpp();
}}
hr::spin
EX transmatrix spin(ld alpha)
Definition: hyperpoint.cpp:434