CustomFilterCallback()
Syntaxe
CustomFilterCallback(@FilterCallback())Description
Spécifie une procédure qui sera appelée pour chaque pixel affiché par une opération de dessin en mode #PB_2DDrawing_CustomFilter.
Arguments
La procédure doit avoir la forme suivante:Procedure CustomCallback(x, y, CouleurSource, CouleurDestination) ; ; Calcul de 'Couleur' à partir des entrées ; ProcedureReturn Couleur EndProcedureLa procédure sera appelée pour chaque pixel affiché par les commandes telles que Line(), Box() ou DrawText(). 'CouleurSource' représente la couleur donnée à l'opération de dessin, et 'CouleurDestination' représente la couleur du pixel aux coordonnées x,y de la surface de dessin. Ces deux couleurs sont toujours en 32 bits (avec canal alpha) indépendamment de la résolution de la surface de dessin. La procédure calculera la nouvelle couleur du pixel à afficher et la renverra.
Cette procédure sera appelée de nombreuse fois (pour chaque pixel à appeler), donc elle devra être la plus courte et la plus optimisée possible, sinon l'impact sur les performances de dessin sera conséquent.
Note: le mode de dessin #PB_2DDrawing_CustomFilter fonctionne uniquement avec ImageOutput().
Exemple
Procedure FilterCallback(x, y, SourceColor, TargetColor) ; Take only the Red component from the Source, do not modify the others ProcedureReturn RGBA(Red(SourceColor), Green(TargetColor), Blue(TargetColor), Alpha(TargetColor)) EndProcedure UseJPEGImageDecoder() If OpenWindow(0, 0, 0, 400, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) LoadImage(1, #PB_Compiler_Home + "examples/sources/data/clouds.jpg") If CreateImage(0, 400, 200) And StartDrawing(ImageOutput(0)) DrawImage(ImageID(1), 0, 0, 400, 200) DrawingMode(#PB_2DDrawing_CustomFilter) CustomFilterCallback(@FilterCallback()) Circle(100, 100, 100, $0000FF) Circle(300, 100, 100, $000000) StopDrawing() ImageGadget(0, 0, 0, 400, 200, ImageID(0)) EndIf Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
OS Supportés
Tous