|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef MOUSETRACKER_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
#define MOUSETRACKER_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tcommon.h"
|
|
Toshihiro Shimizu |
890ddd |
class TStroke;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TOONZLIB_EXPORTS
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_EXPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_EXPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_IMPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_IMPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//===============================================================
|
|
Toshihiro Shimizu |
890ddd |
//! Genera degli stroke
|
|
Toshihiro Shimizu |
890ddd |
/*!
|
|
Toshihiro Shimizu |
890ddd |
Genera degli stroke sulla base di un vettore di punti,
|
|
Shinya Kitaoka |
120a6e |
questo vettore e' fatto di punti che vengono inseriti.
|
|
Shinya Kitaoka |
120a6e |
Consente di visualizzare dei frammenti fatti dai punti che acquisisce.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
class DVAPI StrokeGenerator {
|
|
Shinya Kitaoka |
120a6e |
//! Vettore di TThickPoint
|
|
Shinya Kitaoka |
120a6e |
std::vector<tthickpoint> m_points;</tthickpoint>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//! Numero dei punti visualizzati
|
|
Shinya Kitaoka |
120a6e |
int m_paintedPointCount;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//! Rettangolo che contiene la regione modificata
|
|
Shinya Kitaoka |
120a6e |
TRectD m_modifiedRegion;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//! Rettangolo che contiene l'ultima regione modificata
|
|
Shinya Kitaoka |
120a6e |
TRectD m_lastModifiedRegion;
|
|
shun-iwasawa |
3c83df |
TRectD m_lastPointRect;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//! Ultimo punto del frammento visualizzato
|
|
Shinya Kitaoka |
120a6e |
TPointD m_p0, /*! Ultimo punto del frammento visualizzato*/ m_p1;
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
//! mark that stroke must be looped
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
bool m_loop;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//! Visualizza i frammenti
|
|
Shinya Kitaoka |
120a6e |
/*!
|
|
Shinya Kitaoka |
120a6e |
\param first Indice del primo punto di m_points da visualizzare
|
|
Shinya Kitaoka |
120a6e |
\param last Indice dell'ulimo punto di m_points da visualizzare
|
|
Shinya Kitaoka |
120a6e |
*/
|
|
Shinya Kitaoka |
120a6e |
void drawFragments(int first, int last);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
//! Costruttore
|
|
Shinya Kitaoka |
120a6e |
StrokeGenerator() : m_paintedPointCount(0) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! Distruttore
|
|
Shinya Kitaoka |
120a6e |
~StrokeGenerator() {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! Libera le variabili della classe
|
|
Shinya Kitaoka |
120a6e |
void clear();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! Restituisce true se m_points e' vuoto, false altrimenti.
|
|
Shinya Kitaoka |
120a6e |
bool isEmpty() const;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! Aggiunge un TThickPoint al vettore m_points
|
|
Shinya Kitaoka |
120a6e |
/*!
|
|
Shinya Kitaoka |
120a6e |
Il punto viene aggiunto se la sua distanza dal punto precedente e' maggiore
|
|
Shinya Kitaoka |
120a6e |
di 4*pixelSize2
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
\param point TThickPoint da aggiungere al vettore
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
\param pixelSize2 Size of pixel, use 0 to guarantee that new point will be added
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
\returns true if point was actually added
|
|
Shinya Kitaoka |
120a6e |
*/
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
bool add(const TThickPoint &point, double pixelSize2);
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
//! Remove last point (keep in mind that not each 'add' call produces new point)
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
void pop();
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
//! Mark/unmark track as looped
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
void setLoop(bool loop = true);
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
inline bool getLoop() const { return m_loop; }
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
|
|
Jeremy Bullock |
cd00fd |
TPointD getFirstPoint(); // returns the first point
|
|
Jeremy Bullock |
cd00fd |
|
|
Shinya Kitaoka |
120a6e |
//! Filtra i punti di m_points
|
|
Shinya Kitaoka |
120a6e |
/*!
|
|
Shinya Kitaoka |
120a6e |
Verifica se i primi sei e gli ultimi sei punti successivi hanno una
|
|
Shinya Kitaoka |
120a6e |
variazione di thickness elevata.
|
|
Shinya Kitaoka |
120a6e |
In caso affermativo li cancella.
|
|
Shinya Kitaoka |
120a6e |
*/
|
|
Shinya Kitaoka |
120a6e |
void filterPoints();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! Visualizza l'ultimo frammento
|
|
Shinya Kitaoka |
120a6e |
void drawLastFragments();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! Visualizza tutti i frammenti
|
|
Shinya Kitaoka |
120a6e |
void drawAllFragments();
|
|
Shinya Kitaoka |
120a6e |
|
|
Jeremy Bullock |
7f2044 |
// Only keep first and last points. Used for straight lines
|
|
Jeremy Bullock |
7f2044 |
void removeMiddlePoints();
|
|
Jeremy Bullock |
7f2044 |
|
|
Shinya Kitaoka |
120a6e |
//! Restituisce il rettangolo che contiene la regione modificata
|
|
Shinya Kitaoka |
120a6e |
TRectD getModifiedRegion() const;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! Restituisce il rettangolo che contiene l'ultima regione modificata
|
|
Shinya Kitaoka |
120a6e |
TRectD getLastModifiedRegion();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// if onlyLastPoints is not 0, create the stroke only on last 'onlyLastPoints'
|
|
Shinya Kitaoka |
120a6e |
// points
|
|
Shinya Kitaoka |
120a6e |
//! Genera uno stroke usando TStroke::interpolate
|
|
Shinya Kitaoka |
120a6e |
/*!
|
|
Shinya Kitaoka |
120a6e |
Se onlyLastPoints e' uguale a 0 genera lo stroke sulla base di m_points.
|
|
Shinya Kitaoka |
120a6e |
Se onlyLastPoints e' diverso da zero genera lo stroke sulla base degli ultimi
|
|
Shinya Kitaoka |
120a6e |
onlyLastPoint elementi di m_points
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
\param error Errore che viene passato a TStroke::interpolate
|
|
Shinya Kitaoka |
120a6e |
\param onlyLastPoints Numero elementi sulla base dei quali creare la
|
|
Shinya Kitaoka |
120a6e |
stroke
|
|
Shinya Kitaoka |
120a6e |
*/
|
|
![](https://seccdn.libravatar.org/avatar/2e5dd0bee1e7e619066117de357c8458fc7e847f4345b0cb8a7a5413aa2a45a0?s=16&d=retro) |
fa009d |
TStroke *makeStroke(double error, UINT onlyLastPoints = 0, bool useLoop = false) const;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//===============================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|