Recent Posts

Pages: 1 ... 7 8 [9] 10
81
The concept / Tutor_12 (C++ VS2022 GDImage64 tutorial)
« Last post by Patrice Terrier on August 01, 2023, 09:07:22 am »
twelfth post of a series, translated from the "WinDev and PowerBASIC",
to explain the use of GDImage64 in procedural* programming mode with Visual Studio 2022.

About Tutor_12
This tutor introduces the use of EXIF Tags to read/write image annotations.

EXIF stands for "Exchangeable Image File Format".
The annotations are formatted according to the TIFF specification, and may be found also in JPG, PNG, and many TIFF-based RAW images.

This project is a console application.

ZI_GetImageInfoList
This API uses a zTrace window to list the tags found in the Annecy.jpg file.

zCloneImage
This low level API duplicates the image before writing a new title tag to it: "This is the title of the new clone image".

Extracting Thumbnail
If the EXIF tag contains thumbnail data, then we create a file named "thumbnail.jpg".

GDImage 7.14
Is an experimental version converted to VS2022, and designed specifically to run all the Tutor applications.


   
* procedural programming mode, is based on direct use of the FLAT API (Windows SDK) that is the core meat of the OS.
82
Get ObjReader & Documentation / Full version 3.02
« Last post by Patrice Terrier on July 26, 2023, 02:49:40 pm »
Full version 3.02

The new compressed .7z archive is attached to the first post of this thread.

Mouse input was unexpectedly disabled while using the transparent Help window (F1).
This feature has been restored, to "keep working while reading".
83
The concept / Tutor_11 (C++ VS2022 GDImage64 tutorial)
« Last post by Patrice Terrier on July 18, 2023, 04:12:19 pm »
Eleventh post of a series, translated from the "WinDev and PowerBASIC",
to explain the use of GDImage64 in procedural* programming mode with Visual Studio 2022.

About Tutor_11
This tutor introduces the use of a TOAST window to notify the user about a specific event.
It pops up from the bottom right edge of a parent window, and auto-hides itself after 15 secondes.

This project uses 2 GDImage controls:
The first, is a child window working in DWM transparent mode, using the whole client area to display a helper message.
The second, is a popup child window (the Toast window).

ZI_DwmEnable
This API enable the DWM transparent mode for a specific window (Main and Toast).

ZI_CreateImageComposited
This API is used to create on the fly a composited image from multiple object layers,
they are defined first in a ZOBJECT array using any GDImage object type.
The z-order composition will match the array order, the lower indice at the bottom, the higher on top.
All layers are composited in memory, then saved to file into the temporary folder.

ZI_CreateWindowFromImage
This API creates the Toast window. It uses the magenta color, or the alpha channel to build a region on the fly.
In the example we use the previously saved composited image from the temporary folder.

The width/height of a Toast window is computed to fit the size of the text message.

Last but not least,
the size of the standalone binary EXE is only 15 Kb.


   
* procedural programming mode, is based on direct use of the FLAT API (Windows SDK) that is the core meat of the OS.
84
The concept / Version 7.13
« Last post by Patrice Terrier on July 13, 2023, 10:09:03 am »
The internal size of the CHARTFONT structure has changed,  the private font path has been enlarged from 64 to MAX_PATH.
To avoid error when using larger path.

The new version is attached to the first post of this thread.
85
The concept / Tutor_10 (C++ VS2022 GDImage64 tutorial)
« Last post by Patrice Terrier on July 08, 2023, 09:12:32 pm »
Tenth post of a series, translated from the "WinDev and PowerBASIC",
to explain the use of GDImage64 in procedural* programming mode with Visual Studio 2022.

About Tutor_10
This tutor introduces the use of an image ruban to create a contact sheet.
It is used to browse images from a gallery folder

Contact sheet
You have to move the mouse cursor to the top of the client area to see it (auto-hide).
Once visible, you can scroll the contact sheet to the left or to the right, by moving the cursor hover the auto-hide arrows.
Click on an icon to display the related image.

Watermak
It is shown on the right corner bottom, when selecting a new image.

Last but not least,
the size of the standalone binary EXE is only 17 Kb.


   
* procedural programming mode, is based on direct use of the FLAT API (Windows SDK) that is the core meat of the OS.
86
The concept / Tutor_09 (C++ VS2022 GDImage64 tutorial)
« Last post by Patrice Terrier on July 06, 2023, 02:47:13 pm »
Ninth post of a series, translated from the "WinDev and PowerBASIC",
to explain the use of GDImage64 in procedural* programming mode with Visual Studio 2022.

About Tutor_09
This tutor introduces the use of built-in 3D charting features.
It does use the GDImage WGL_CreateWindow() API to create the 3D container,
using OpenGL WGL extensions and antialiasing.

Billboarding is used to always keep some of the legends in front of the camera,
and also with the bubble point meshes, to produce pseudo spheres.

TTF private font is used to build some of the text meshes on the fly,
this ensures that they always looks the same, whatever the computer being used.

Image reflection is used to create realistic transparent glass materials.

Last but not least,
the size of the standalone binary EXE is only 24 Kb.


   
* procedural programming mode, is based on direct use of the FLAT API (Windows SDK) that is the core meat of the OS.
87
The concept / ObjReader Viewer 3.00.07 (C++ VS2022)
« Last post by Patrice Terrier on July 04, 2023, 07:21:11 pm »
This version has been converted to VS2022, using TCLIB.dll to produce a small 39 Kb ORV64.exe binary.

It uses GDImage64.dll, WinLIFT64.dll, Bass.dll, and ORDLL64.dll that is a small subset of the ObjReader OpenGL 3D engine.

About:
ORDLL64 can be used with any 64-bit language to render wavefront .obj 3D models, using the specific ObjReader materials.
You can select a project from the combobox,
or using drag and drop to play any model downloaded from the 3D collection
(Explorer drag and drop can also be used to play audio files)

The ORDLL64.dll API is using this limited set of functions
Code: [Select]
OR_CreateWindow(IN DWORD dwExStyle, IN HWND hParent, IN DWORD dwStyle, IN long x, IN long y, IN long w, IN long h, IN HMENU CtrlID);
OR_DetectGPU();
OR_GPUinfo();
OR_About();
OR_ViewReset();
OR_GetAudioVolume();
OR_SetAudioVolume(IN long nVolume);
OR_ProcessCommandLine(IN WCHAR* lpCmdLine);
OR_Vertices();
OR_Triangles();
OR_Indices();
OR_Meshes();
OR_Materials();
OR_ObjSize();
OR_LoadTime();
OR_Version();
OR_TimerEnable(IN BOOL enable);
OR_SetSwapInterval(IN BOOL bUseInterval);
OR_ObjFileName();
OR_GPU();
OR_CPU();
OR_GetAniTick();
88
The concept / Tutor_08 (C++ VS2022 GDImage64 tutorial)
« Last post by Patrice Terrier on June 27, 2023, 06:13:16 pm »
Eighth post of a series, translated from the "WinDev and PowerBASIC",
to explain the use of GDImage64 in procedural* programming mode with Visual Studio 2022.

About Tutor_08
This tutor introduces the use of multiple overlapping transparent layers, working in DWM composited mode.

The "aero_glass.png" used at the top of the z-order is displayed in "ZS_INACTIVE" mode,
that means it is disabled, however, all WM_ messages are passed to the immediate underlaying sprites.

Even the layer shown at the bottom of the z-order is using variable opacity,
which makes it possible to discern the windows desktop in the background.

The fish animation is using 4 bitmaps, each bitmap being composed of multi frames.
See the DetectMultiframe() function.

Last but not least,
the size of the standalone binary EXE is only 13 Kb.


   
* procedural programming mode, is based on direct use of the FLAT API (Windows SDK) that is the core meat of the OS.
89
The concept / WinLIFT DreamScene version 2.00 (C++ VS 2022)
« Last post by Patrice Terrier on June 26, 2023, 04:40:34 pm »
This is a rather complex project using several technologies.
  • It is a compound application, mixing 64 and 32-bit code,
  • WM_COPYDATA, is used to communicate between multiple binary components.
  • The main application is 64-bit, while the companion ZWP (ZAP Window Plugin) is 32-bit.
  • ZWP is the interface between the high level code, and the low level 32-bit OpenGL visual plugins.
  • ZWP is also in charge of processing the audio signal.
  • Using RCDATA to create the 32-bit audio DLL (Bass.dll) directly in memory.

DWM compositing

Both WinLIFT and GDImage are able to work in transparent composited mode, using variable opacity.
This is quite obvious when you start the application, before playing audio.

You can move the main window around, however WinLIFT always keep it inside of the WinDows desktop client size.
It does the same when you popup the (info) "About" dialog box, that is constraint inside of the main window client size.
The winLIFT modal info dialog box, is using DDW (Dim Disabled Window) with grayed transparent background until you close it.

About "Let her dance for you"
The central PNG animation is synchronized on the audio signal tempo while playing music.
You can select an audio file from the dedicated combo, or using drag and drop from the Explorer.
While playing music, you can drag the seeker to move forward or backward.
The small rotating gauge located at the bottom right edge allows you to adjust the audio level.
You can change of OpenGL visual plugin, by selecting a new name from the specific combo.
While playing, you can move the cursor to the center of the GDImage control to pause/play music.

WinLIFT controls
All controls are using anchor properties.
The gauges, and the vertical track bar (zoom), can be restored to their default values using a right mouse click.
The Transparent check box, enable or disable full transparency.
The PLAY check box, turn music on/off

90
The concept / Re: Tutor_01 (C++ VS2022 GDImage64 tutorial)
« Last post by Patrice Terrier on June 24, 2023, 09:47:35 am »
TCLIB.dll is an acronym fot Tiny C Library, it is written in pure C.
It is a replacement for the MS C Runtime to reduce program size, without using a compressor.

More about this, in Frederick Harris's section.
http://www.objreader.com/index.php?topic=369.msg6200#msg6200
Pages: 1 ... 7 8 [9] 10