{"id":1020,"date":"2017-10-31T12:25:42","date_gmt":"2017-10-31T11:25:42","guid":{"rendered":"http:\/\/lamartinieredesign.fr\/?page_id=1020"},"modified":"2018-09-24T17:09:54","modified_gmt":"2018-09-24T15:09:54","slug":"controlp5","status":"publish","type":"page","link":"https:\/\/lamartinieredesign.fr\/?page_id=1020","title":{"rendered":"ControlP5"},"content":{"rendered":"<h5>Installer controlP5<\/h5>\n<p>Il faut d&rsquo;abord charger la biblioth\u00e8que controlP5 dans Processing pour avoir acc\u00e8s \u00e0 la cr\u00e9ation d&rsquo;\u00e9l\u00e9ments d&rsquo;interface gr\u00e2ce \u00e0 de nombreux contr\u00f4leurs, comme ci-dessous par exemple.<\/p>\n<p><a href=\"http:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2017\/10\/controlp5.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1036 alignnone\" src=\"http:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2017\/10\/controlp5.jpg\" alt=\"\" width=\"490\" height=\"470\" srcset=\"https:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2017\/10\/controlp5.jpg 490w, https:\/\/lamartinieredesign.fr\/wp-content\/uploads\/2017\/10\/controlp5-300x288.jpg 300w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/a><\/p>\n<p>Menu Sketch &gt; Importer une librairie &gt; Ajouter une librairie&#8230;<\/p>\n<p>Chercher controlP5 dans la liste, le s\u00e9lectionner puis cliquer sur le bouton Install en bas \u00e0 droite.<\/p>\n<p>Voir l&rsquo;usage des contr\u00f4leurs dans les exemples : Menu Fichier &gt; Exemples\u2026 &gt; Contributed Libraries &gt; ControlP5.<\/p>\n<h5>Positionner les Labels<\/h5>\n<p>Pour cr\u00e9er un contr\u00f4leur, par exemple un slider, le code de base ressemble \u00e0 cela dans le setup() :<\/p>\n<p><code>cp5.addSlider(\"nom\")<\/code><br \/>\n<code>\u00a0 .setPosition(10, 20)<\/code><br \/>\n<code>\u00a0 .setSize(90, 10)<\/code><br \/>\n<code>\u00a0 .setRange(0, 100)<\/code><br \/>\n<code>\u00a0 .setValue(0)<\/code><br \/>\n<code>\u00a0 .setLabel(\"\u00e9tiquette\")<\/code><br \/>\n<code>\u00a0 ;<\/code><\/p>\n<p>Ici, il faut choisir le nom du slider. Une variable doit \u00eatre cr\u00e9\u00e9e pr\u00e9alablement avec le m\u00eame nom. Celui-ci doit etre en bas-de-casses et ne comporter aucun caract\u00e8re sp\u00e9cial. Les param\u00e8tres de position (setPosition), dimension (setSize), \u00e9chelle de valeurs (setRange), valeur par d\u00e9faut (setValue) et \u00e9tiquette (setLabel) sont d\u00e9finis. L&rsquo;\u00e9tiquette correspond au texte qui apparait dans l&rsquo;interface. Il est possible\u00a0 d&rsquo;utiliser tous signes pour cela mais il faut \u00eatre clair. C&rsquo;est en g\u00e9n\u00e9ral le minimum que l&rsquo;on utilise. La liste compl\u00e8te est visible dans les exemples (Menu Fichier &gt; Exemples&#8230;).<\/p>\n<p>Afin de pouvoir contr\u00f4ler certains param\u00e8tres non pr\u00e9sents dans cette liste, il faut l\u00e9g\u00e8rement modifier le code, comme ci-dessous :<\/p>\n<p><code>Slider sl1 = cp5.addSlider(\"nom\")<\/code><br \/>\n<code>\u00a0 .setPosition(10, 20)<\/code><br \/>\n<code>\u00a0 .setSize(90, 10)<\/code><br \/>\n<code>\u00a0 .setRange(0, 100)<\/code><br \/>\n<code>\u00a0 .setValue(0)<\/code><br \/>\n<code>\u00a0 .setLabel(\"\u00e9tiquette\")<\/code><br \/>\n<code>\u00a0 .setColorLabel(110) \/\/ gris fonc\u00e9 <\/code><br \/>\n<code>\u00a0 ;<\/code><br \/>\n<code><br \/>\n<\/code><code>Label labelSl1 = sl1.getCaptionLabel();<\/code><br \/>\n<code> labelSl1.align(ControlP5.TOP, LEFT);<\/code><br \/>\n<code> labelSl1.getStyle().setMarginTop(-10);<\/code><\/p>\n<p>La diff\u00e9rence tient dans une variable du mime type que le contr\u00f4leur, ici Slider, \u00e0 laquelle on doit donner un nom, ici sl1 (pour slider 1 par exemple). Cela permet d&rsquo;ajouter apr\u00e8s le point-virgule, des lignes de code pour r\u00e9gler de nouveaux param\u00e8tres.<\/p>\n<p>Ici, nous allons modifier la position de l&rsquo;\u00e9tiquette.\u00a0 Il faut commencer par cr\u00e9er une nouvelle variable de type Label, que j&rsquo;ai choisi de nommer labelSl1. On peut alors lui attribuer des param\u00e8tres.<br \/>\nD&rsquo;abord l&rsquo;alignement. les valeurs d&rsquo;alignement sont d&rsquo;abord verticale (TOP, BOTTOM, TOP_OUTSIDE, BOTTOM_OUTSIDE), puis horizontale (LEFT, RIGHT, LEFT_OUTSIDE, RIGHT_OUTSIDE).<br \/>\nEnfin, un d\u00e9calage par rapport \u00e0 la position obtenue peut etre appliqu\u00e9 en pixels (setMarginTop, setMarginBottom, setMarginLeft, setMarginRight, setPaddingTop, setPaddingBottom, setPaddingLeft, setPaddingRight).<\/p>\n<p>De la m\u00eame mani\u00e8re, il est possible de modifier d&rsquo;autres param\u00e8tres d&rsquo;un Label, par exemple sa visibilit\u00e9 :<\/p>\n<p><code>labelSl1.hide;<\/code><\/p>\n<h5>Modifier un param\u00e8tre d&rsquo;un contr\u00f4leur sur un \u00e9v\u00e9nement<\/h5>\n<p>Il faut pour cela cr\u00e9er une fonction controlEvent sp\u00e9cifique, apr\u00e8s (et surtout en dehors) le draw, afin de d\u00e9tecter une action sur un contr\u00f4leur.<\/p>\n<p>Par exemple :<\/p>\n<p><code>public void controlEvent(ControlEvent theEvent) {<\/code><br \/>\n<code>\u00a0 if(theEvent.isController()) { <\/code><br \/>\n<code>\u00a0\u00a0\u00a0 \/\/ d\u00e9signe un contr\u00f4leur par son nom<\/code><br \/>\n<code>\u00a0 if(theEvent.getController().getName()==\"slider1\") {<\/code><br \/>\n<code>\u00a0\u00a0\u00a0 float value = theEvent.getController().getValue();<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ prevent warnings at start<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0 if(cp5.getController(\"slider1\") != null) { <\/code><br \/>\n<code>\/\/ modifie\u00a0\u00a0 les couleurs du slider1<\/code><br \/>\n<code>cp5.getController(\"slider1\").setColorForeground(color(r,v,b));<\/code><br \/>\n<code> cp5.getController(\"slider1\").setColorActive(color(r,v,b));<\/code><br \/>\n<code> cp5.getController(\"slider1\").setColorBackground(color(r,v,b));<\/code><br \/>\n<code>\/\/ modifie une propri\u00e9t\u00e9 d'un autre slider<\/code><br \/>\n<code> cp5.getController(\"slider2\").setColorForeground(color(r,v,b));<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/code><br \/>\n<code>\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/code><br \/>\n<code>\u00a0\u00a0 }<\/code><br \/>\n<code>}<\/code><\/p>\n<p>Parfois, il suffit de cr\u00e9er une fonction portant le nom du contr\u00f4leur.<\/p>\n<p>Par exemple, pour un contr\u00f4leur Bang, qui s&rsquo;appellerait \u00ab\u00a0reset\u00a0\u00bb\u00a0 :<\/p>\n<p><code>public void reset() {<\/code><br \/>\n<code>\u00a0 \/\/ redessiner l'\u00e9cran<\/code><br \/>\n<code>\u00a0 background(255);<\/code><\/p>\n<p><code>\u00a0 \/\/ remettre un slider \u00e0 sa valeur initiale<\/code><br \/>\n<code>\u00a0 Slider sl1 = ((Slider)cp5.getController(\"nom\"));<\/code><br \/>\n<code>\u00a0 sl1.setValue(nom);<\/code><br \/>\n<code>}<\/code><\/p>\n<h5>Exemple pour Masquer ou afficher un bouton<\/h5>\n<p>Les contr\u00f4leurs CP5 ne doivent pas \u00eatre plac\u00e9s dans le draw(), sinon Processing pense qu&rsquo;il les cr\u00e9e plusieurs fois et cela g\u00e9n\u00e8re des erreurs. Il faut les cr\u00e9er une seule fois dans le setup().<\/p>\n<p>Ensuite, il est possible de modifier leurs propri\u00e9t\u00e9s. Pour un bouton, la modification d&rsquo;\u00e9tat du bouton se fait par un void sp\u00e9ccifique, par exemple pour un bouton nomm\u00e9 A, lorsqu&rsquo;on appuie dessus, il commence par disparaitre, puis r\u00e9alise les actions de votre choix :<\/p>\n<p><code>public void A(int theValue) {<\/code><br \/>\n<code>\u00a0\u00a0 cp5.getController(\"A\").hide();<\/code><br \/>\n<code>\u00a0\u00a0 \/\/ actions \u00e0 saisir<\/code><br \/>\n<code>}<\/code><\/p>\n<p>Le contr\u00f4le des propri\u00e9t\u00e9s de ce bouton se font donc en \u00e9crivant la ligne cp5.getController(\u00ab\u00a0A\u00a0\u00bb).propri\u00e9t\u00e9();<\/p>\n<p>Ici les propri\u00e9t\u00e9s hide() et show() permettent de masquer ou d&rsquo;afficher un bouton. La ligne suivante permet d&rsquo;afficher le bouton nomm\u00e9 \u00ab\u00a0B\u00a0\u00bb.<\/p>\n<p><code>cp5.getController(\"B\").show();<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Installer controlP5 Il faut d&rsquo;abord charger la biblioth\u00e8que controlP5 dans Processing pour avoir acc\u00e8s \u00e0 la cr\u00e9ation d&rsquo;\u00e9l\u00e9ments d&rsquo;interface gr\u00e2ce \u00e0 de nombreux contr\u00f4leurs, comme ci-dessous par exemple. Menu Sketch &gt; Importer une librairie &gt; Ajouter une librairie&#8230; Chercher controlP5 dans la liste, le s\u00e9lectionner puis cliquer sur le bouton Install en bas \u00e0 droite. &hellip; <a href=\"https:\/\/lamartinieredesign.fr\/?page_id=1020\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">ControlP5<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1016,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/1020"}],"collection":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1020"}],"version-history":[{"count":13,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/1020\/revisions"}],"predecessor-version":[{"id":1184,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/1020\/revisions\/1184"}],"up":[{"embeddable":true,"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=\/wp\/v2\/pages\/1016"}],"wp:attachment":[{"href":"https:\/\/lamartinieredesign.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}