<commit_before>    _________  ____   _ _   _ _       _____                              _           _   
    |  ___|  \/  | | | | | (_) |     /  ___|                            | |         | |  
    | |_  | .  . | | | | |_ _| |___  \ `--.  ___ _ __ ___  ___ _ __  ___| |__   ___ | |_ 
    |  _| | |\/| | | | | __| | / __|  `--. \/ __| '__/ _ \/ _ \ '_ \/ __| '_ \ / _ \| __|
    | |   | |  | | |_| | |_| | \__ \_/\__/ / (__| | |  __/  __/ | | \__ \ | | | (_) | |_ 
    \_|   \_|  |_/\___/ \__|_|_|___(_)____/ \___|_|  \___|\___|_| |_|___/_| |_|\___/ \__|


### A screenshot library for ProSnap
(but you can use it for whatever - see _license.txt_)


### State of the Code
- Mostly operational


### Usage
Create a screenshot by creating a new `Screenshot` object.
Of a window (by handle):

    var WindowScreenshot = new Screenshot(targetWindowHandle, ScreenshotMethod.DWM, true);

or, of a rect:

    var RectScreenshot = new Screenshot(new Rectangle(0,0,100,100));

This creates an object with various useful metadata properties (screen location, window title, etc). `BaseScreenshotImage` is a bitmap with the image data.

This library is only responsible for creating the raw screenshot object.
If you want rounded corners or compositing multiple screesnots, that it's up to the library consumer.
See **[ProSnap](https://github.com/factormystic/ProSnap)** for an example of how I did it.


### Where you can help
**FMUtils.Screenshot** can create screenshots either by copying the raw screen image, or by creating a backing form, registering a 1:1 sized DWM thumbnail, and copying that.
The latter method has the pleasant side effect of making Aero-glass effects opaque.

Other screenshot applications use slightly more advanced methods, such as taking two screenshots with the backing form alternately black then white, the combination of which can be used to determine per-pixel opacity.
That would be a great feature for this library as well, so it's an open task for anywho who wants to take a crack.<commit_msg>More details about using ComposedScreenshot <commit_after>    _________  ____   _ _   _ _       _____                              _           _   
    |  ___|  \/  | | | | | (_) |     /  ___|                            | |         | |  
    | |_  | .  . | | | | |_ _| |___  \ `--.  ___ _ __ ___  ___ _ __  ___| |__   ___ | |_ 
    |  _| | |\/| | | | | __| | / __|  `--. \/ __| '__/ _ \/ _ \ '_ \/ __| '_ \ / _ \| __|
    | |   | |  | | |_| | |_| | \__ \_/\__/ / (__| | |  __/  __/ | | \__ \ | | | (_) | |_ 
    \_|   \_|  |_/\___/ \__|_|_|___(_)____/ \___|_|  \___|\___|_| |_|___/_| |_|\___/ \__|


### A screenshot library for ProSnap
(but you can use it for whatever - see _license.txt_)


### State of the Code
- Mostly operational


### Usage
Create a screenshot by creating a new `Screenshot` object.
Of a window (by handle):

    var WindowScreenshot = new ComposedScreenshot(targetWindowHandle, ScreenshotMethod.DWM, true);

or, of a rect:

    var RectScreenshot = new ComposedScreenshot(new Rectangle(0,0,100,100));

The `Screenshot` class is only responsible for creating the raw screenshot object.
This creates an object with various useful metadata properties (screen location, window title, etc). `BaseScreenshotImage` is a bitmap with the image data.

If you want a slightly nicer endpoint, that it's accomplished with `ComposedScreenshot`.
This class has more advanced functionality such as maintaining a composition stack, rounding corners, and adding a shadow effect.

See **[ProSnap](https://github.com/factormystic/ProSnap)** for an example of how I built an end-user application out of it.


### Where you can help
**FMUtils.Screenshot** can create screenshots either by copying the raw screen image, or by creating a backing form, registering a 1:1 sized DWM thumbnail, and copying that.
The latter method has the pleasant side effect of making Aero-glass effects opaque.

Other screenshot applications use slightly more advanced methods, such as taking two screenshots with the backing form alternately black then white, the combination of which can be used to determine per-pixel opacity.
That would be a great feature for this library as well, so it's an open task for anywho who wants to take a crack.
{'fraction_non_alphanumeric': 0.11210551106924165, 'fraction_numerical': 0.004710315591144607, 'mean_word_length': 2.6361301369863015, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1711262', 'n_tokens_mistral': 1362, 'n_tokens_neox': 1268, 'n_words': 443}