9#define STB_IMAGE_WRITE_IMPLEMENTATION
10#include <stb_image_write.h>
13#include <jGL/OpenGL/openGLInstance.h>
14#include <jGL/Display/desktopDisplay.h>
15#include <jGL/orthoCam.h>
37const float dr = (1.0)*0.5;
39const float dphi = (2.0*3.14)*0.05;
55 std::vector<uint8_t>
pixels(resolution.x*resolution.y*4, 0);
116 glm::vec4(5.0, 5.0, 5.0, 255.0)/255.0f,
117 glm::vec4(250.0, 250.0, 250.0, 255.0)/255.0f
130 glm::vec4(250.0, 250.0, 250.0, 255.0)/255.0f,
131 glm::vec4(5.0, 5.0, 5.0, 255.0)/255.0f
146 if (
display.keyHasAnyEvents(
GLFW_KEY_W, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
151 if (
display.keyHasAnyEvents(
GLFW_KEY_S, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
156 if (
display.keyHasAnyEvents(
GLFW_KEY_Q, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
161 if (
display.keyHasAnyEvents(
GLFW_KEY_E, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
166 if (
display.keyHasAnyEvents(
GLFW_KEY_A, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
171 if (
display.keyHasAnyEvents(
GLFW_KEY_D, {jGL::EventType::PRESS, jGL::EventType::HOLD}))
192 std::vector<Atom> & atoms,
193 std::map<int, Element> & emphasisControls,
194 std::multimap<Element, uint64_t> & elementMap,
196 float deemphasisAlpha
231 for (
const auto &
control : emphasisControls)
235 auto iter = elementMap.equal_range(
control.second);
240 atoms[
iter.first->second].colour.a =
alpha;
276 const unsigned int resX,
277 const unsigned int resY,
284 auto tic = std::chrono::high_resolution_clock::now();
301 glm::vec2(64.0f, resY-64.0f),
311 for (
int n = 0; n < 60; n++)
316 auto toc = std::chrono::high_resolution_clock::now();
326void backward(std::unique_ptr<Structure> & structure)
329 if (
f > 2) {
f -= 2; }
330 else {
f = structure->frameCount()-2+
f;}
331 structure->readFrame(
f);
343 const std::vector<Atom> & atoms,
348 for (
const auto &
atom : atoms)
350 if (
atom.colour.a != 0.0 &&
atom.colour.a != 1.0)
void translate(std::vector< Atom > &atoms, glm::vec3 r)
Definition atom.h:146
Render atoms as sphere meshes.
Definition atomRenderer.h:27
Render Bonds as ray-traced cylinders.
Definition bondRenderer.h:18
A 3D projective camera centered on a focus moving on a sphere.
Definition camera.h:30
void rotate(float increment)
Rotate about the y OpenGL axis.
Definition camera.h:136
void zoom(float increment)
Increment the zoom.
Definition camera.h:110
void incline(float increment)
Incline about the y OpenGL axis.
Definition camera.h:117
glm::vec< L, float, glm::qualifier::highp > vec
Definition commandLine.h:214
bool closing
Definition main.h:43
void keyEventCallback(GLFWwindow *window, int key, int scancode, int action, int mods)
Override jGL default event callback.
Definition main.h:82
const float dr
Definition main.h:37
void loadingScreenFrame(jGL::DesktopDisplay &display, Camera &camera, AtomRenderer &loadingAtoms, std::string progressMessage, Theme theme, const unsigned int resX, const unsigned int resY, bool hideInfo=false)
Display a frame of the loading screen.
Definition main.h:270
bool atomControls(jGL::DesktopDisplay &display, std::vector< Atom > &atoms, std::map< int, Element > &emphasisControls, std::multimap< Element, uint64_t > &elementMap, std::vector< float > &alphaOverrides, float deemphasisAlpha)
Controls for the Atoms position's.
Definition main.h:190
void setAlpha(std::vector< Atom > &atoms, std::vector< float > alphas)
Set the alpha channel of Atom colours.
Definition main.h:256
void setTransparencySorting(const std::vector< Atom > &atoms, AtomRenderer &atomRenderer, BondRenderer &bondRenderer)
Enable of disable transparency sorting if there are transparent elements.
Definition main.h:342
const float dphi
Definition main.h:39
Theme lightTheme()
A light colour theme.
Definition main.h:126
const float dtheta
Definition main.h:38
std::unique_ptr< jGL::jGLInstance > jGLInstance
Definition main.h:45
void backward(std::unique_ptr< Structure > &structure)
Move back one frame.
Definition main.h:326
void screenshot(glm::ivec2 resolution)
Obtain screen pixels and write to a png.
Definition main.h:53
const float emphasisedAlpha
Definition main.h:41
Theme darkTheme()
A dark colour theme.
Definition main.h:112
bool cameraControls(jGL::DesktopDisplay &display, Camera &camera)
Controls for the camera.
Definition main.h:143
A background and text colour theme.
Definition main.h:102
glm::vec4 background
Definition main.h:103
glm::vec4 text
Definition main.h:104
std::string timeStamp()
Current timestamp.
Definition util.h:179