calculate number of monitors; added Mode.h abstract class
This commit is contained in:
parent
cdfc27bfbb
commit
f2aa2ff908
11
dwss.cc
11
dwss.cc
@ -10,6 +10,12 @@
|
|||||||
|
|
||||||
#include "GnomeScreensaver.h"
|
#include "GnomeScreensaver.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#define MAX_ASPECT (16.0/9.0*1.02)
|
||||||
|
|
||||||
|
static int n_monitors = 1;
|
||||||
|
|
||||||
static bool expose (GnomeScreensaver & gs)
|
static bool expose (GnomeScreensaver & gs)
|
||||||
{
|
{
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
@ -31,6 +37,11 @@ static bool expose (GnomeScreensaver & gs)
|
|||||||
|
|
||||||
static bool configure (GnomeScreensaver & gs, int width, int height)
|
static bool configure (GnomeScreensaver & gs, int width, int height)
|
||||||
{
|
{
|
||||||
|
for (n_monitors = 1;
|
||||||
|
(double)width/(double)n_monitors/(double)height > MAX_ASPECT;
|
||||||
|
n_monitors++)
|
||||||
|
;
|
||||||
|
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, width, height);
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
17
modes/Mode.h
Normal file
17
modes/Mode.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
#ifndef MODE_H
|
||||||
|
#define MODE_H
|
||||||
|
|
||||||
|
#include "GnomeScreensaver.h"
|
||||||
|
|
||||||
|
class Mode
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool expose (GnomeScreensaver & gs) = 0;
|
||||||
|
virtual bool configure (GnomeScreensaver & gs, int width,
|
||||||
|
int height) = 0;
|
||||||
|
virtual bool update (GnomeScreensaver & gs) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MODE_H */
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user