# The Demo Project

The demo project shows the dynamic pictures of the running system in its current state.

![Main window – dynamic system colors](/files/-LOIx5WnBOMj_lGbgFNF)

It uses a subclass of a Canvas, **ColorCanvas**, to demonstrate one possibility to get a dynamic color inside a paint event while still keeping it variable.

## The controls

The controls on the lower right part of the window perform the following functions:

### Text Playground

Has no real function. Use it to see changes in your apperance/system palette color settings.

### Controls

The controls window shows examples on the extension methods for some controls included in the user32Addition and AppKitAddition modules.&#x20;

![](/files/-LOj_1ZWzQ8DUSx7IE9Z)

\
You can set images and templates on Push- and Radiobuttons, create an invisible (or semi-transparent) splashwindow or even exchange a popupmenu’s whole content with a custom ContainerControl (this one on macOS only) and use two different kinds of double buffers on windows and controls (Windows only). See how the Main window is being opened without visible drawing of the canvases. This was done by setting its `Composited` value to True.

### Win Colors

is a window showing Window-exclusive system colors. They have been mapped to similar macOS system colors for some kind of similarity though.

![WinWindow specific colors](/files/-LOIwBVZsnws0Exau505)

### Color methods

The color methods window is a playground for the included color manipulation methods.

![Color manipulation methods window](/files/-LO35yxQ-SE_K-PxDgxo)

\
You can change the color of the upper and middle row leftmost canvas by clicking on it.

You can set the strength of the effects in the bottom row – [BlendColor](/add-ons/cstruecolors/documentation/nscoloraddition.md#blendcolor-extends-c-as-color-blendcolor-as-color-fraction-as-double-as-color), [Highlight](/add-ons/cstruecolors/documentation/nscoloraddition.md#highlight-extends-c-as-color-level-as-double-as-color), [Shadow](/add-ons/cstruecolors/documentation/nscoloraddition.md#shadow-extends-c-as-color-level-as-double-as-color) and [ChangeAlpha](/add-ons/cstruecolors/documentation/nscoloraddition.md#changealpha-extends-c-as-color-alpha-as-double-integer-as-color) – in the allowed range between 0.0 and 1.0.

{% hint style="info" %}
Please note that [AddSystemEffect](/add-ons/cstruecolors/documentation/nscoloraddition.md#addsystemeffect-extends-c-as-color-effect-as-nscoloraddition-nscolorsystemeffect-as-color) is macOS only. The Windows version of this method returns the original color instead. The other methods are approximations built in Xojo as Windows does not know these methods natively.
{% endhint %}

### Visual Effects

{% hint style="info" %}
**macOS only!**
{% endhint %}

Opens a window showing the different materials of [VisualEffectViews](/add-ons/cstruecolors/documentation/appkitaddition/visualeffectview.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xojo.gitbook.io/add-ons/cstruecolors/documentation/the-demo-project.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
