+#include <assert.h>\r
+\r
+#include "Damier.h"\r
+#include "Device.h"\r
+#include "MathTools.h"\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Declaration *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Imported *|\r
+ \*-------------------------------------*/\r
+\r
+__global__ void damier(uchar4* ptrDevPixels, int w, int h, DomaineMath domaineMath, int n, float t);\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Implementation *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+/*-------------------------*\\r
+ |* Constructeur *|\r
+ \*-------------------------*/\r
+\r
+Damier::Damier(int w, int h, float dt, int n) :\r
+ variateurAnimation(IntervalF(0, 2 * PI), dt)\r
+ {\r
+ // Inputs\r
+ this->w = w;\r
+ this->h = h;\r
+ this->n = n;\r
+\r
+ // Tools\r
+ this->dg = dim3(8, 8, 1); // disons a optimiser\r
+ this->db = dim3(16, 16, 1); // disons a optimiser\r
+ this->t = 0;\r
+ ptrDomaineMathInit=new DomaineMath(0,0,2*PI,2*PI);\r
+\r
+ //Outputs\r
+ this->title = "[API Image Fonctionelle] : Damier zoomable CUDA";\r
+\r
+ // Check:\r
+ //print(dg, db);\r
+ Device::assertDim(dg, db);\r
+ assert(w == h);\r
+ }\r
+\r
+Damier::~Damier()\r
+ {\r
+ delete ptrDomaineMathInit;\r
+ }\r
+\r
+/*-------------------------*\\r
+ |* Methode *|\r
+ \*-------------------------*/\r
+\r
+/**\r
+ * Override\r
+ */\r
+void Damier::animationStep()\r
+ {\r
+ this->t = variateurAnimation.varierAndGet(); // in [0,2pi]\r
+ }\r
+\r
+/**\r
+ * Override\r
+ */\r
+void Damier::runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath)\r
+ {\r
+ damier<<<dg,db>>>(ptrDevPixels,w,h,domaineMath,n,t);\r
+ }\r
+\r
+/*--------------*\\r
+ |* get *|\r
+ \*--------------*/\r
+\r
+/**\r
+ * Override\r
+ */\r
+DomaineMath* Damier::getDomaineMathInit(void)\r
+ {\r
+ return ptrDomaineMathInit;\r
+ }\r
+\r
+/**\r
+ * Override\r
+ */\r
+float Damier::getT(void)\r
+ {\r
+ return t;\r
+ }\r
+\r
+/**\r
+ * Override\r
+ */\r
+int Damier::getW(void)\r
+ {\r
+ return w;\r
+ }\r
+\r
+/**\r
+ * Override\r
+ */\r
+int Damier::getH(void)\r
+ {\r
+ return h;\r
+ }\r
+\r
+/**\r
+ * Override\r
+ */\r
+string Damier::getTitle(void)\r
+ {\r
+ return title;\r
+ }\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r
+\r