FLxyin

FLxyin — Détecte la position de curseur de la souris dans une zone définie à l'intérieur d'un FLpanel.

Description

Semblable à xyin, détecte la position de curseur de la souris dans une zone définie à l'intérieur d'un FLpanel.

Syntaxe

koutx, kouty, kinside  FLxyin ioutx_min, ioutx_max, iouty_min, iouty_max, \
      iwindx_min, iwindx_max, iwindy_min, iwindy_max [, iexpx, iexpy, ioutx, iouty]

Initialisation

ioutx_min, ioutx_max - les valeurs limites de l'intervalle de sortie (X ou axe horizontal).

iouty_min, iouty_max - les valeurs limites de l'intervalle de sortie (Y ou axe vertical).

iwindx_min, iwindx_max - les coordonnées X des bords horizontaux de la zone sensible, relatives au FLpanel, en pixels.

iwindy_min, iwindy_max - les coordonnées Y des bords verticaux de la zone sensible, relatives au FLpanel, en pixels.

iexpx, iexpy - (facultatif) nombres entiers définissant le comportement des sorties x ou y : 0 -> la sortie est linéaire ; 1 -> la sortie est exponentielle ; tout autre nombre indique le numéro d'une table existante utilisée pour l'indexation. Noter que dans les opérations normales, la table doit être normalisée et unipolaire (tous les éléments de la table doivent être compris entre zéro et un). Dans ce cas, tous les éléments de la table seront mis à l'échelle en fonction de imin et de imax. Il est tout de même possible d'utiliser des tables non normalisées (créées avec un numéro de table négatif, qui peuvent contenir des éléments de n'importe quelle valeur), afin d'accéder aux valeurs courantes des éléments de la table, sans mise à l'échelle, en affectant 0 à iout_min et 1 à iout_max.

ioutx, iouty – (facultatif) valeurs de sortie initiales.

Exécution

koutx, kouty - valeurs de sorties, mises à l'échelle selon les choix de l'utilisateur.

kinside - un drapeau indiquant si le curseur de la souris se trouve en dehors du rectangle de la zone définie. S'il est en dehors de la zone, kinside vaut zéro.

FLxyin détecte la position du curseur de la souris dans une zone définie à l'intérieur d'un FLpanel. Quand FLxyin est appelé, la position de la souris dans la zone choisie est retournée au taux-k. Il est possible de définir la zone sensible, ainsi que les valeurs minimale et maximale correspondant aux positions minimale et maximale de la souris. Il n'est pas nécessaire que les boutons de la souris soient appuyés pour que FLxyin fonctionne. Il est capable d'opérer correctement même si d'autres widgets (présents dans le FLpanel) chevauchent la zone sensible.

A l'inverse de la plupart des autres opcodes FLTK, FLxyin ne peut pas être utilisé dans l'en-tête, car ce n'est pas un widget. Ce n'est que la définition d'une zone de détection de la souris à l'intérieur d'un panneau FLTK.

Exemples

Voici un exemple de l'opcode FLxyin. Il utilise le fichier FLxyin.csd.

Exemple 285. Exemple de l'opcode FLxyin.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in
-odac           -iadc    ;;;RT audio I/O
</CsOptions>
<CsInstruments>

sr=48000
ksmps=128
nchnls=2

; Example by Andres Cabrera 2007

FLpanel	"FLxyin", 200, 100, -1, -1, 3
FLpanelEnd
FLrun

instr 1
  koutx, kouty, kinside FLxyin 0, 10, 100, 1000, 10, 190, 10, 90
  aout buzz 10000, kouty, koutx, 1
  printk2 koutx
  outs aout, aout
endin


</CsInstruments>
<CsScore>
f 1 0 1024 10 1
i 1 0 3600

e

</CsScore>
</CsoundSynthesizer>


Voici une autre exemple de l'opcode FLxyin. Il utilise le fichier FLxyin-2.csd.

Exemple 286. Exemple de l'opcode FLxyin.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in    No messages
-odac           -iadc     -d     ;;;RT audio I/O
</CsOptions>
<CsInstruments>

sr=44100
kr=441
ksmps=100
nchnls=2

; Example by Gabriel Maldonado

	FLpanel	"Move the mouse inside this panel to hear the effect",400,400
	FLpanel_end
	FLrun

	instr 1

k1, k2, kinside	FLxyin   50, 1000, 50, 1000, 100, 300, 50, 250, -2,-3
;if k1 <= 50 || k1 >=5000 || k2 <=100 || k2 >= 8000 kgoto end ; if cursor is outside bounds, then don't play!!!

a1	oscili	3000, k1, 1
a2	oscili	3000, k2, 1

	outs	a1,a2
printk2 k1
printk2 k2, 10
printk2 kinside, 20
end:
	endin
	
</CsInstruments>
<CsScore>

f1 0 1024 10 1
f2 0 17 19 1 1 90 1
f3 0 17 19 2 1 90 1
i1 0 3600

</CsScore>
</CsoundSynthesizer>


Voir aussi

FLpanel

Crédits

Auteur : Gabriel Maldonado

Nouveau dans la version 5.06