Recent Posts

Pages: [1] 2 3 ... 10
1
Eye Candies / TheCube (WinDev code)
« Last post by Patrice Terrier on June 17, 2021, 05:02:45 pm »
T h e C u b e

Ce projet écrit à l'origine en WD12 avec GDImage 5.07,
montre comment réaliser un contrôle de type "champ cube" avec GDImage 7.00 en mode 64-bit.

This project originally written in WD12 with GDImage 5.07,
shows how to perform a "cube field" control with GDImage 7.00 in 64-bit mode.


Caractéristiques principales :
Main Features:

1 - Contrairement au champ Cube de décor WinDev, nul besoin d'installer le framework DotNET (donc, pas d'attente lors du lancement initial).
1 - Unlike the WinDev decor Cube control, no need to install the DotNET framework (therefore, no waiting during the initial launch).
2 - Vous pouvez interagir avec le cube et ses clones.
2 - You can interact with the cube and its clones.
3 - Chaque face du cube peut afficher une image différente.
3 - Each face of the cube can display a different image.
4 - En cliquant sur une face du cube principal (le plus gros) vous pouvez changer l'image de fond.
4 - By clicking on a face of the main cube (the largest) you can change the background image.
5 - Vous pouvez déplacer le cube à n'importe quel endroit dans le champ GDImage (avec la souris ou le clavier).
5 - You can move the cube to any location in the GDImage control (with the mouse or the keyboard).
6 - La fonction "clone" (spécifique de GDImage) vous permet d'avoir plusieurs cubes animés qui fonctionnent en même temps.
6 - The "clone" function (specific to GDImage) allows you to have several animated cubes that work at the same time.
7 - Le GFI GDImage (visible lorsqu'on choisit un dossier image) est compatible avec toutes les animations y compris DirectX, OpenGL, et les contrôles externes.
7 - The GFI GDImage (visible when choosing an image folder) is compatible with all animations including DirectX, OpenGL, and external controls.

Parallèlement ce projet montre comment effectuer une sélection avec la souris sur un objet 3D comportant plusieurs textures.
At the same time, this project shows how to make a selection with the mouse on a 3D object with several textures.


Dans le monde de la 3D, le moyen usuel d'effectuer une sélection sur un objet en mouvement se nomme : "Picking".
Cependant cette technique, basée sur l'éloignement des différents objets par rapport à la caméra, ne permet pas de connaître avec certitude l'endroit précis correspondant aux coordonnées de la souris.
In the world of 3D, the usual way to make a selection on a moving object is called: "Picking".
However, this technique, based on the distance of the various objects from the camera, does not make it possible to know with certainty the precise location corresponding to the coordinates of the mouse.


J'ai donc été obligé d'utiliser une autre méthode appelée "color detection".
Avec cette méthode, lorsqu'on est en mode "HitDetection", on utilise une couleur unique sur chaque face du cube au lieu d'y "mapper" les textures.
Ensuite, il suffit de tester la couleur du point survolé par la souris, pour connaître la face correspondante.
So I was forced to use another method called "color detection".
With this method, when we are in "HitDetection" mode, we use a unique color on each face of the cube instead of "mapping" the textures to it.
Then, it suffices to test the color of the point hovered over by the mouse, to know the corresponding face.


L'affectation des couleurs est effectuée dans la procédure "DrawCube" :
The colors are assigned in the "DrawCube" procedure:

PROCEDURE DrawCube(LOCAL nHitDetection is int)
IF nHitDetection THEN glColor4ub(0,0,1,255)
GL_DrawCubeFrontFace(gaMt[1].Texture)

IF nHitDetection THEN glColor4ub(0,0,2,255)
GL_DrawCubeBackFace(gaMt[2].Texture)

IF nHitDetection THEN glColor4ub(0,0,3,255)
GL_DrawCubeTopFace(gaMt[3].Texture)

IF nHitDetection THEN glColor4ub(0,0,4,255)
GL_DrawCubeBottomFace(gaMt[4].Texture)

IF nHitDetection THEN glColor4ub(0,0,5,255)
GL_DrawCubeRightFace(gaMt[5].Texture)

IF nHitDetection THEN glColor4ub(0,0,6,255)
GL_DrawCubeLeftFace(gaMt[6].Texture)


La détection proprement dite "HitDetection" est effectuée dans la procédure "RenderAnimation" :
The actual "HitDetection" detection is performed in the "RenderAnimation" procedure:

   IF gP.nHitDetection THEN
       x, y is int
      nID is 1byte int
      ZD_GetObjectXY(IDS_3DOBJECT, x, y)
      mX is int = gP.nMouseX - x
      mY is int = gP.nMouseY - y
      zSplitColorARGB(GetPixel(GLmemDC(), mX, mY), 0, nID, 0, 0)
        IF nID < ArrayInfo(gaMt, tiDimension) + 1 THEN
           MonBufferAnsi is a Buffer on 520
           Transfer(&MonBufferAnsi, &gaMt[nID].FullName, 520)
         gP.sUseBackground = UnicodeToAnsi(MonBufferAnsi)//gaMt[nID].FullName)

         GDImageUpdateBackground()
      
         // What is the next ListBox texture to use?
         nItem is int = ListSelect(BackgroundList)
          IF nItem < ListCount(BackgroundList) THEN nItem++ ELSE nItem = 1
         ListSelectPlus(BackgroundList, nItem)
      
         // Update the selected texture
          swFullName is string UNICODE = AnsiToUnicode(BackgroundList[nItem])
          Transfer(&gaMt[nID].FullName, &swFullName, 520)
         
         ZI_UpdateNamedGLTextureFromFileEx(BackgroundList[nItem], gaMt[nID].ID, gaMt[nID].Square)
      END

                gP.nHitDetection = 0
   
   ELSE
      // Paint the resulting bitmap to our window
      ZD_ReplaceObjectBitmap(ZI_CreateBitmapFromImage(zBitmapToImage( GLmemDC() )), IDS_3DOBJECT, True)
   END


Capture d'écran :
Screenshot:



Comment utiliser "TheCube" :
How to use "TheCube":

1 - Effectuer un simple ou double clic, avec le bouton gauche de la souris, sur l'une des faces du cube (le plus gros). L'image sélectionnée est utilisée comme nouveau fond de la fenêtre, tandis qu'une nouvelle image est affichée sur la face correspondante du cube.
1 - Perform a single or double click, with the left mouse button, on one of the faces of the cube (the largest). The selected image is used as the new window background, while a new image is displayed on the corresponding face of the cube.
2 - Vous pouvez utiliser la souris (bouton gauche) ou le clavier pour déplacer le cube à un nouvel emplacement.
2 - You can use the mouse (left button) or the keyboard to move the cube to a new location.
3 - Un clic avec le bouton droit de la souris permet de choisir un nouveau dossier contenant des images qui seront affichées sur les faces du cube (choisir de préférence un dossier contenant plus de 6 images).
3 - Clicking with the right mouse button allows you to choose a new folder containing images that will be displayed on the faces of the cube (preferably choose a folder containing more than 6 images).
4 - Vous pouvez déplacer tous les cubes, cependant la sélection d'image ne se fera que sur le cube principal, celui qui est agrandi lors du démarrage initial.
4 - You can move all the cubes, however the image selection will only be done on the main cube, the one that is enlarged during the initial start-up.

Note :
En raison de l'utilisation des fonctions 3D de GDImage, vous devez utiliser une carte graphique qui supporte les spécification OpenGL 2.00+.
Due to the use of the 3D functions of GDImage, you must use a graphics card that supports the OpenGL 2.00+ specification.

Lien vers le Site de dépôt PCS
2
Eye Candies / GoldFish64 (WinDev code)
« Last post by Patrice Terrier on June 13, 2021, 05:06:13 pm »
GoldFish64



est la version 64-bit d'un code écrit à l'origine en 2008, il fonctionne avec toutes les versions de WinDev à partir de WD17 +.
Il utilise directement GDIPLUS pour afficher une animation "layered" avec opacité variable.
 
Attention, ce code est destiné aux développeurs qui maîtrisent la programmation bas niveau !
Car il s'appuie directement sur le SDK de la Flat API Windows en mode procédural.
Tel quel, le source WL peut être traduit dans n'importe quel langage, car il utilise très peu de code spécifique WinDev.
La taille du framework est réduite au minimum, avec uniquement "machine virtuelle" et "Fonctions standard".

Le point d'entrée du code est dans le "code du projet", car il n'y a ni fenêtre ni champ WinDev.
3
The 3D Model Collection / BMW M4 DTM
« Last post by Patrice Terrier on June 08, 2021, 04:45:24 pm »
BMW M4 DTM

Note: This model requires the use of ObjReader version 3.00+










Note: Attachments are only available to registered users.
4
Tips & Tricks / AudioCap64.DLL
« Last post by Patrice Terrier on June 08, 2021, 10:26:05 am »
This 64-bit WD17+ (WinDev) project is intended to perform real time audio capture of anything playing on your PC.
The DLL itself is written in C++.



While it could be used to record from the microphone,
the best quality is achieved when using a multiplex audio card and recording from the "Stereo mix" device.

How to Use AudioCap:
  • Start AudioCap.
  • Start playing a movie (with a sound track) or a local or internet audio file (streaming).
  • Press the [Start capture] button, to see the oscilloscope PCM WIMDATA curve.
  • Check "Capture to Wave" if you want to create the "capture.wav", or check "Monitoring only" if you want to see only the peak level.

In "capture to Wave" mode, a WAVE/PCM 44000Hz stereo file is saved in the selected folder.

Note : The demo version of AudioCap64.dll limits the WAVE record to 30 seconds.

How to get the full version:
You can download the full C++ project from codeproject
or from this link.
And you can also make a donation to get the DLL without nag screen and record limitation.

Donation:
     
If you like this project



Click here to make a donation

Or you can also use: paypal.me
5
Canary Bay / Re: PowerBASIC Barebone version
« Last post by Patrice Terrier on June 07, 2021, 10:28:16 am »
Carlo

Are you able to reproduce this behavior systematically?

If yes, tell me step by step what you are doing.

6
Canary Bay / Re: PowerBASIC Barebone version
« Last post by Carlo Pagani on June 06, 2021, 08:08:48 pm »
Thanks Patrice - I will play now with this and see the possibilities. I quite like the way you overlay the browser window into the 32Bit app.

--Edit FYI
There are some issues on my machine (Win 10 x64) in that the icons don't load the page and if I type in a URL, I get a transparent window where the browser was?
7
Canary Bay / Re: PowerBASIC Barebone version
« Last post by Patrice Terrier on June 06, 2021, 07:43:29 pm »
Carlo

With the latest WV2B 64-bit.

You can use something like this WinDev code in the ProcessBrowserMessage callback procedure(see the code in red)

sub ProcessBrowserMessage(byval wParam as dword, byval lParam as long)
    if wParam = %WM_NCDESTROY then '// Last Browser TAB is closing
        if gP.hRgn then
            DeleteObject(gP.hRgn): gP.hRgn = 0
            SetWindowRgn(gP.hMain, gP.hRgn, %False)
            if (IsWindowVisible(GetDlgItem(gP.hMain, %IDC_UNDOCK))) then
                local r as rect, p as POINT
                GetWindowRect(GetDlgItem(gP.hMain, %IDC_BROWER_CONTAINER), r)
                p.x = r.nLeft: p.y = r.nTop: ScreenToClient(gP.hMain, p)
                MoveWindow(GetDlgItem(gP.hMain, %IDC_BROWER_CONTAINER), p.x, p.y + gP.dock_offset, rWidth(r), rHeight(r) - gP.dock_offset, %TRUE)
            end if
            ShowWindow(GetDlgItem(gP.hMain, %IDC_BROWER_CONTAINER), %SW_SHOW)
            ShowWindow(GetDlgItem(gP.hMain, %IDC_UNDOCK), %SW_HIDE)
            ShowWindow(GetDlgItem(gP.hMain, %IDC_DOCK), %SW_HIDE)

            SetForeGroundWindow(gP.hMain)

            WindowRedraw(gP.hMain)
        end if
    elseif wParam = %WM_SETTEXT then
        local hMapFile, pBuf as dword
        hMapFile = OpenFileMapping(%FILE_MAP_ALL_ACCESS, %false, "WV2B_MF")
        if (hMapFile) then
            pBuf = MapViewOfFile(hMapFile, %FILE_MAP_ALL_ACCESS, 0, 0, %BUF_SIZE)
            if (pBuf) then
                local sAnsi as string
                local CharCount as dword
                CharCount = LStrlenW(BYVAL pBuf) '// Get dual bytes character count
                sAnsi     = NUL$(CharCount)      '// Initialize string
                WideCharToMultiByte(%CP_ACP, 0, byval pBuf, CharCount, byval strptr(sAnsi), CharCount, byval 0, byval 0)

                zTrace((sAnsi)) '// Display the URL entered by the user

             '// To refuse the entered URL (parental control by example)
             '// use %MG_CANCEL below
             'SendMessageA(gP.hBrowser, gP.WM_BROWSER, %MG_CANCEL, 0)


                UnmapViewOfFile(pBuf)
            end if
            CloseHandle(hMapFile)
        end if
    end if
end sub


8
Canary Bay / Re: PowerBASIC Barebone version
« Last post by Carlo Pagani on June 06, 2021, 11:41:38 am »
Thanks Patrice, this is great stuff to experiment with browser app. I am playing around with OAuth2 so I have a question if the browser URL input can be disabled or hidden via a message?
9
Eye Candies / BassBox
« Last post by Patrice Terrier on June 01, 2021, 03:52:46 pm »
This project, written in PowerBASIC, was started long ago, it has been the most downloaded application from the formal José Roca's forum that has been deprecated since the passing of Bob Zale in 2012.

Note: In order to download the full project, you must first register using your real name.

BassBox is a multimedia audio player designed to work with Windows XP, VISTA, W7, W8, W10+.
This is a 32-bit application working in composited mode.

Note: For 64-bit see the MediaBox (MBox64)

The player uses audio sensitive OpenGL visual plugins that have been written specifically to provide the best multimedia experience.

Main features
• Play audio stream: aif, mp1, mp2, mp3, ogg, wav, wma.
• Play music tracker: it, mod, mtm, s3m, umx, xm.
• Play compressed music tracker: mo3.
• Play CD-audio.
• Playlist, using the ".bbp" extension (to play from the internet using either "http://" or "ftp://").
• More than 20 exclusive OpenGL visual plugins.
• Windowed or full screen effect visualization.
• Real time oscilloscope.
• Audio settings: reverberation, chorus, flanger, echo, sound rotation.
• 10-band equalizer.
• Use drag and drop to play directly from files or folders.
• Skinned interface with background library.
• Detailed CHM help file.

For further details make sure to read the provided BassBox.chm from the zip file.



Copyright
This code is under the copyright of Patrice Terrier, it couldn't be translated to another language without prior agreement.
All credits must be given where credit is due, and the name of the project must be kept unchanged.
You are not allowed to create a derivative work or DLL from this project.


If you need to use BassBox or its visual plugins in a commercial project you must first contact Patrice Terrier

Donation:
     
If you like this project



Click here to make a donation

Or you can also use: paypal.me


10
Eye Candies / PhotoComposer
« Last post by Patrice Terrier on May 14, 2021, 09:38:50 am »
Is a GDImage 32-bit application written in PowerBASIC.

Est une application GDImage 32-bit écrite en PowerBASIC (dispo aussi en WinDev WD17+).





The initial purpose of this program is to convert any picture or photography to a postcard, that can be printed or sent as e-mail attachment through the internet.

Le but initial de PhotoComposer est de transformer n'importe quel photo en carte postale, pour l'imprimer ou l'envoyer par internet en pièce jointe


Main features
• Dedicated frame library to change the border style.
• Dedicated icon library to customize the presentation.
• Mix image and text altogether as multiple overlaping layers.
• Change the overlaping order from bottom to top and top to bottom.
• Select the variable opacity for each of the layer.
• Rotate image and text at any angle within the full 360° range.
• Control all parameters of the TrueType text font being used.
• Pan and zoom either the graphics or the annotations.
• High quality display to suppress the "stair case" effect while zooming.
• Use clone to duplicate either image or text with all properties.
• Drag & drop between Windows Explorer and the PhotoComposer form.
• Supported graphic format: bmp, gif, jpg, jpeg, png, tif, tiff.
• Use Outlook Express or Windows mail, to send your work as an attachment.
• PhotoComposer is powered by GDImage.


Caractéristiques principales
• Bibliothèque de bordures pour encadrer les photos.
• Bibliothèque d'icônes pour personnaliser la composition.
• Combinaison d'images et de textes sous forme de calques superposés.
• Changement de l'ordre de superposition vers le haut ou le bas.
• Réglage individuel de la transparence.
• Images et textes peuvent pivoter librement sur 360°.
• Les textes sont paramétrables et utilisent des fontes True Type.
• Un zoom réglable permet d'ajuster la taille de chaque objet.
• L'affichage haute qualité supprime l'effet "escalier" lors des redimensionnements.
• Le clonage permet de dupliquer chaque image ou texte avec ses propriétés.
• Support du "tiré déplacé" entre l'Explorateur et la fenêtre de PhotoComposer.
• Formats graphiques supportés : bmp, gif, jpg, jpeg, png, tif, tiff.
• Compatible Outlook Express et Windows Mail pour l'envoie en pièce jointe.
• PhotoComposer utilise le moteur graphique GDImage.





User guide:
To display the help file, press the blue icon asside the language flag.

Guide utilisateur :
Pour consulter l'aide, presser sur l'icone bleu du personnage qui se trouve à côté du drapeau qui permet de basculer entre français et anglais.


Source code 32-bit / Code source 32-bit :
Available on request in either PowerBASIC or WinDev (WD17+), request a valid GDImage license.
Disponible à la demande soit en PowerBASIC soit en WinDev (WD17+), nécessite une licence GDImage valide.



Donation:
     
If you like this project



Click here to make a donation

Or you can also use: paypal.me
Pages: [1] 2 3 ... 10