resize of scrollbar in sparrowshell
This commit is contained in:
parent
5a5de75c8d
commit
7ff6bef30b
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,5 @@
|
|||||||
build*
|
build*
|
||||||
*.user
|
*.user
|
||||||
|
data/*.jpg
|
||||||
|
data/*.mtl
|
||||||
|
data/*.obj
|
||||||
|
@ -106,7 +106,7 @@ void Engine::setScene(SceneTree *scene)
|
|||||||
m_scene = scene;
|
m_scene = scene;
|
||||||
m_renderer->setScene(m_scene);
|
m_renderer->setScene(m_scene);
|
||||||
m_renderer->resizeGL(m_window->getSize().x, m_window->getSize().y);
|
m_renderer->resizeGL(m_window->getSize().x, m_window->getSize().y);
|
||||||
// scene->addObject(scene->getRootObject(), m_sparrowshell);
|
scene->addObject(scene->getRootObject(), m_sparrowshell);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::outputShell(std::string str)
|
void Engine::outputShell(std::string str)
|
||||||
|
@ -5,10 +5,12 @@
|
|||||||
#include "scenetree.h"
|
#include "scenetree.h"
|
||||||
#include "mesh.h"
|
#include "mesh.h"
|
||||||
#include "phongmaterial.h"
|
#include "phongmaterial.h"
|
||||||
|
#include "tools/utils.h"
|
||||||
|
|
||||||
const unsigned int SparrowShell::BUFFER_MAX_LENGTH = 50;
|
const unsigned int SparrowShell::BUFFER_MAX_LENGTH = 50;
|
||||||
const unsigned int SparrowShell::BUFFER_DISPLAYED_NUMBER = 10;
|
const unsigned int SparrowShell::BUFFER_DISPLAYED_NUMBER = 10;
|
||||||
const unsigned int SparrowShell::SCROLLBAR_PIXEL_WIDTH = 10;
|
const unsigned int SparrowShell::SCROLLBAR_PIXEL_WIDTH = 10;
|
||||||
|
bool test = true;
|
||||||
|
|
||||||
SparrowShell::SparrowShell(sf::Window* window, Input* input): m_window(window),m_input(input),m_position(glm::ivec2(0,0))
|
SparrowShell::SparrowShell(sf::Window* window, Input* input): m_window(window),m_input(input),m_position(glm::ivec2(0,0))
|
||||||
{
|
{
|
||||||
@ -17,7 +19,7 @@ SparrowShell::SparrowShell(sf::Window* window, Input* input): m_window(window),m
|
|||||||
Mesh* mesh = new Mesh();
|
Mesh* mesh = new Mesh();
|
||||||
mesh->addRectangle2D(m_position,m_dimension);
|
mesh->addRectangle2D(m_position,m_dimension);
|
||||||
PhongMaterial *mat = new PhongMaterial();
|
PhongMaterial *mat = new PhongMaterial();
|
||||||
mat->diffuse = glm::vec3(0,0.5,0.5);
|
mat->diffuse = glm::vec3(0.1,0.1,0.1);
|
||||||
mesh->setMaterial(mat);
|
mesh->setMaterial(mat);
|
||||||
mesh->setDepth(-0.5);
|
mesh->setDepth(-0.5);
|
||||||
mesh->initGL();
|
mesh->initGL();
|
||||||
@ -31,6 +33,8 @@ void SparrowShell::out(std::string s)
|
|||||||
if (m_buffer.size() == BUFFER_MAX_LENGTH)
|
if (m_buffer.size() == BUFFER_MAX_LENGTH)
|
||||||
m_buffer.pop_back();
|
m_buffer.pop_back();
|
||||||
m_buffer.push_front(s);
|
m_buffer.push_front(s);
|
||||||
|
if (m_buffer.size() > BUFFER_DISPLAYED_NUMBER)
|
||||||
|
m_resizeScrollBar = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SparrowShell::scrollUp(){
|
void SparrowShell::scrollUp(){
|
||||||
@ -55,13 +59,14 @@ SparrowShell::ScrollBar::ScrollBar(SparrowShell* shell):m_shell(shell){
|
|||||||
m_position = glm::ivec2(m_shell->m_dimension.x - SparrowShell::SCROLLBAR_PIXEL_WIDTH,0);
|
m_position = glm::ivec2(m_shell->m_dimension.x - SparrowShell::SCROLLBAR_PIXEL_WIDTH,0);
|
||||||
m_dimension = glm::ivec2(SparrowShell::SCROLLBAR_PIXEL_WIDTH,m_shell->m_dimension.y);
|
m_dimension = glm::ivec2(SparrowShell::SCROLLBAR_PIXEL_WIDTH,m_shell->m_dimension.y);
|
||||||
Mesh* mesh = new Mesh();
|
Mesh* mesh = new Mesh();
|
||||||
mesh->addRectangle2D(m_position,m_dimension);
|
mesh->addRectangle2D(glm::vec2(0),m_dimension);
|
||||||
PhongMaterial *mat = new PhongMaterial();
|
PhongMaterial *mat = new PhongMaterial();
|
||||||
mat->diffuse = glm::vec3(1,0,0);
|
mat->diffuse = glm::vec3(0,0,0.5);
|
||||||
mesh->setDepth(-0.4);
|
mesh->setDepth(-0.4);
|
||||||
mesh->setMaterial(mat);
|
mesh->setMaterial(mat);
|
||||||
mesh->initGL();
|
mesh->initGL();
|
||||||
m_mesh = new MeshNode(mesh);
|
m_mesh = new MeshNode(mesh);
|
||||||
|
utils::setPosition2D(m_mesh,m_position);
|
||||||
m_shell->addChild(m_mesh);
|
m_shell->addChild(m_mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,10 +74,14 @@ void SparrowShell::ScrollBar::update(){
|
|||||||
m_position.y = m_shell->m_position.y;
|
m_position.y = m_shell->m_position.y;
|
||||||
m_dimension.y = m_shell->m_dimension.y;
|
m_dimension.y = m_shell->m_dimension.y;
|
||||||
|
|
||||||
if (m_shell->m_buffer.size() > BUFFER_DISPLAYED_NUMBER){
|
float cran = ((float)m_shell->m_dimension.y/(float)m_shell->m_buffer.size());
|
||||||
float cran = ((float)m_shell->m_dimension.y/(float)m_shell->m_buffer.size());
|
int indexCursor = m_shell->m_buffer.size()-(m_shell->m_index+BUFFER_DISPLAYED_NUMBER);
|
||||||
int indexCursor = m_shell->m_buffer.size()-(m_shell->m_index+SCROLLBAR_PIXEL_WIDTH);
|
glm::ivec2 new_pos((int)m_position.x, (int) cran * indexCursor);
|
||||||
m_position.y += (int)(cran * indexCursor);
|
|
||||||
m_dimension.y = (int)(cran * BUFFER_DISPLAYED_NUMBER);
|
if (m_shell->m_resizeScrollBar){
|
||||||
|
glm::ivec2 new_dim(m_dimension.x,(int)(cran * BUFFER_DISPLAYED_NUMBER));
|
||||||
|
utils::resize2D(m_mesh,m_dimension,new_dim);
|
||||||
|
m_shell->m_resizeScrollBar = false;
|
||||||
}
|
}
|
||||||
|
utils::setPosition2D(m_mesh,new_pos);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ private:
|
|||||||
sf::Window* m_window;
|
sf::Window* m_window;
|
||||||
Input* m_input;
|
Input* m_input;
|
||||||
int m_index = 0;
|
int m_index = 0;
|
||||||
|
bool m_resizeScrollBar = false;
|
||||||
glm::ivec2 m_position;
|
glm::ivec2 m_position;
|
||||||
glm::ivec2 m_dimension;
|
glm::ivec2 m_dimension;
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <tools/loader.h>
|
#include <tools/loader.h>
|
||||||
|
|
||||||
#include <tools/font.h>
|
#include <tools/font.h>
|
||||||
|
#include <tools/utils.h>
|
||||||
|
|
||||||
#include <sparrowshell.h>
|
#include <sparrowshell.h>
|
||||||
|
|
||||||
@ -27,14 +28,16 @@ int main(){
|
|||||||
|
|
||||||
/* Exemple creation mesh 2D
|
/* Exemple creation mesh 2D
|
||||||
*
|
*
|
||||||
|
*/
|
||||||
Mesh* mesh = new Mesh();
|
Mesh* mesh = new Mesh();
|
||||||
mesh->addRectangle2D(50,50,100,100);
|
mesh->addRectangle2D(180, 400,5,5);
|
||||||
PhongMaterial *mat = new PhongMaterial();
|
PhongMaterial *mat = new PhongMaterial();
|
||||||
mat->diffuse = glm::vec3(1, 0.5, 0);
|
mat->diffuse = glm::vec3(1, 0.5, 0);
|
||||||
mesh->setMaterial(mat);
|
mesh->setMaterial(mat);
|
||||||
|
mesh->setDepth(1);
|
||||||
mesh->initGL();
|
mesh->initGL();
|
||||||
*/
|
scene.addObject(scene.getRootObject(),new MeshNode(mesh));
|
||||||
|
/* */
|
||||||
|
|
||||||
/* Exemple ajout d'un objet a la scene
|
/* Exemple ajout d'un objet a la scene
|
||||||
*
|
*
|
||||||
@ -54,11 +57,14 @@ int main(){
|
|||||||
MeshNode* mnode/* = new MeshNode(fonte_des_neiges->getTextMesh("Hello World!"));
|
MeshNode* mnode/* = new MeshNode(fonte_des_neiges->getTextMesh("Hello World!"));
|
||||||
scene.addObject(scene.getRootObject(),mnode)*/;
|
scene.addObject(scene.getRootObject(),mnode)*/;
|
||||||
|
|
||||||
|
|
||||||
mnode = new MeshNode(fonte_des_neiges->getTextMesh("WOW", glm::vec3(0.5, 0.7, 0.2)));
|
mnode = new MeshNode(fonte_des_neiges->getTextMesh("WOW", glm::vec3(0.5, 0.7, 0.2)));
|
||||||
mnode->setTransform(glm::rotate(glm::translate(glm::mat4(), glm::vec3(70, 30, 0)), 0.4f, glm::vec3(0, 0, 1)));
|
// mnode->setTransform(glm::rotate(glm::translate(glm::mat4(), glm::vec3(70, 30, 0)), 0.4f, glm::vec3(0, 0, 1)));
|
||||||
|
utils::setPosition2D(mnode,glm::vec2(180, 400));
|
||||||
scene.addObject(scene.getRootObject(),mnode);
|
scene.addObject(scene.getRootObject(),mnode);
|
||||||
|
|
||||||
mnode = new MeshNode(fonte_des_neiges->getTextMesh("Such Text", glm::vec3(0.7, 0.4, 0.2)));
|
|
||||||
|
/* mnode = new MeshNode(fonte_des_neiges->getTextMesh("Such Text", glm::vec3(0.7, 0.4, 0.2)));
|
||||||
mnode->setTransform(glm::rotate(glm::translate(glm::mat4(), glm::vec3(200, 170, 0)), -0.5f, glm::vec3(0, 0, 1)));
|
mnode->setTransform(glm::rotate(glm::translate(glm::mat4(), glm::vec3(200, 170, 0)), -0.5f, glm::vec3(0, 0, 1)));
|
||||||
scene.addObject(scene.getRootObject(),mnode);
|
scene.addObject(scene.getRootObject(),mnode);
|
||||||
|
|
||||||
@ -70,6 +76,13 @@ int main(){
|
|||||||
mnode->setTransform(glm::translate(glm::mat4(), glm::vec3(400, 250, 0)));
|
mnode->setTransform(glm::translate(glm::mat4(), glm::vec3(400, 250, 0)));
|
||||||
mnode->m_movement = glm::translate(glm::rotate(glm::translate(glm::mat4(), glm::vec3(580, 280, 0)), 0.03f, glm::vec3(0, 0, 1)), glm::vec3(-580, -280, 0));
|
mnode->m_movement = glm::translate(glm::rotate(glm::translate(glm::mat4(), glm::vec3(580, 280, 0)), 0.03f, glm::vec3(0, 0, 1)), glm::vec3(-580, -280, 0));
|
||||||
scene.addObject(scene.getRootObject(),mnode);
|
scene.addObject(scene.getRootObject(),mnode);
|
||||||
|
*/
|
||||||
|
engine.outputShell("Hello World!");
|
||||||
|
engine.outputShell("Starting test :");
|
||||||
|
|
||||||
|
for(int i = 0; i < 15; i++){
|
||||||
|
engine.outputShell(std::to_string(i));
|
||||||
|
}
|
||||||
|
|
||||||
engine.setScene(&scene);
|
engine.setScene(&scene);
|
||||||
engine.start();
|
engine.start();
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "scenetree.h"
|
||||||
|
|
||||||
std::vector<std::string> utils::split(const std::string &line, char sep){
|
std::vector<std::string> utils::split(const std::string &line, char sep){
|
||||||
std::vector<std::string> tokens;
|
std::vector<std::string> tokens;
|
||||||
@ -10,3 +11,20 @@ std::vector<std::string> utils::split(const std::string &line, char sep){
|
|||||||
tokens.push_back(line.substr(start));
|
tokens.push_back(line.substr(start));
|
||||||
return tokens;
|
return tokens;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void utils::setPosition2D(MeshNode *mnode, glm::vec2 pos){
|
||||||
|
glm::mat4 tr = mnode->getTransform();
|
||||||
|
glm::vec3 vpos(pos.x,pos.y,0);
|
||||||
|
tr = glm::translate(tr,vpos - glm::vec3(tr[3]));
|
||||||
|
mnode->setTransform(tr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void utils::resize2D(MeshNode *mnode, glm::vec2 dim, glm::vec2 new_dim){
|
||||||
|
glm::mat4 tr = mnode->getTransform();
|
||||||
|
glm::vec3 pos(tr[3]);
|
||||||
|
glm::vec2 ratio = new_dim / dim;
|
||||||
|
tr = glm::scale(tr, glm::vec3(1,ratio.y,1));
|
||||||
|
glm::vec3 new_pos(tr[3]);
|
||||||
|
tr = glm::translate(tr,pos-new_pos);
|
||||||
|
mnode->setTransform(tr);
|
||||||
|
}
|
||||||
|
@ -3,10 +3,15 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
|
class MeshNode;
|
||||||
|
|
||||||
namespace utils
|
namespace utils
|
||||||
{
|
{
|
||||||
std::vector<std::string> split(const std::string &line, char sep);
|
std::vector<std::string> split(const std::string &line, char sep);
|
||||||
|
void setPosition2D(MeshNode*, glm::vec2);
|
||||||
|
void resize2D(MeshNode*, glm::vec2, glm::vec2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // UTILS_H
|
#endif // UTILS_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user