Metadata-Version: 2.1
Name: f-stop
Version: 0.2.14
Summary: A basic scripting-lang for image-manipulation in python
Home-page: https://github.com/f-stop-lang/f-stop-rply/tree/iteration
Author: Tom-the-Bomb
License: MIT
Project-URL: Repository, https://github.com/f-stop-lang/f-stop-rply/tree/iteration
Project-URL: Issue tracker, https://github.com/f-stop-lang/f-stop-rply/issues
Description: # F-Stop
        ![logo](https://avatars.githubusercontent.com/u/85209342?s=200&v=4)
        ---
        - A mini-lang for basic image manipulation written in python
        
        - Uses rply for lexing / parsing
            - Pillow & OpenCV for the processing
        
        ## Execution
        
        ```py
        from fstop import Runner
        
        runner = Runner(reset_after_execute=True)
        # reset_after_execute indicates to not preserve state after each execution
        runner.execute(
            'ECHO "hello world"' # hello world program :D
        )
        ```
        
        ## Language Examples
        
        (basic)
        ```prolog
        OPEN 'filename.png' AS img // Opens a local image
        CONVERT img "RGBA"         // convert to RGBA mode
        RESIZE  img (256, 256)     // resize image to size 256 x 256
        BLUR img 10                // blur the image by 10 deg
        SAVE img 'OUTPUT.PNG'      // save the image as output.png
        ```
        
        (basic operators)
        - `+` addition : works on `number`, `tuples` and `sequences`
        - `-` `*` subtraction, multiplication : works on `number` only
        - `/` `|` division, floor-div : works on `number` only
        - `^` exponents : works on `number` only
        
        (properties)
        Examples:
        - `WIDTH img` -> int (width of the image)
        - `HEIGHT img` -> int (height of the image)
        - `MODE img` -> str (image mode)
        and more ...
        
        (streams)
        - streams can be passed in via the `streams` kwarg in `execute`
        EX: `runner.execute(..., streams=[BytesIO(some_bytes)])`
        - And can be accessed via `OPEN STREAM index AS ...`
        
        ```prolog
        OPEN STREAM 0 AS img
        INVERT img
        SAVE img 'out.jpg'
        ```
        - you can save output images into streams ex:
        `SAVE img STREAM 'png'`
        - they can be accessed via `runner.streams` which will return `List[BytesIO]`
        
        (sequences / GIFs)
        ```prolog
        NEW [] AS sequence // new empty sequence
        
        OPEN 'frame1.png' AS frame1
        APPEND frame1 TO sequence // append to sequence
        OPEN 'frame2.png' AS frame2
        APPEND frame2 TO sequence // append to sequence
        
        SAVE sequence 'test.gif' 
        // specify duration and loop
        SAVE sequence 'test.gif' DURATION 10 LOOP 0
        
        // initialize sequence with existing frames
        NEW [img, img2] AS seq
        // initialize sequence from a gif image
        NEW SEQUENCE img AS seq
        ```
        
        (Iterating)
        ```prolog
        // iterate over a container
        ITER ((0, 5, 1, 2) AS i) -> (
            ECHO i
        ) // tuple
        
        ITER ([img1, img2, img3] AS frame) -> (
            APPEND frame TO something
        ) // sequence
        
        ITER (RANGE (1, 20) AS deg) -> (
            CLONE img AS clone
            BLUR clone deg
            SAVE clone STREAM 'PNG'
        ) // iter over a range and blur image by that degree
        
        ITER (img AS frame) -> (
            INVERT frame
        ) // iterates over an image and inverts each frame
        // same effect as INVERT img, 
        // but that inverts the first frame only and makes it static
        // which is fine for static images but not really for gifs
        ```
        
        (pasting and blending)
        ```prolog
        BLEND img, img2 ALPHA 0.5 AS blended
        ```
        ```prolog
        PASTE img ON img2 (10, 10)
        // with a mask
        PASTE img ON img2 MASk mask (10, 10)
        ```
        
        and more! (soon)
        
        - fstop is still in early development
        - bug fixes will come soon, open an issue if you encounter one :)
        - more features to come
            - more opencv features
            - variable declaration
            - better imagedraws
        
        ---
        (Still a WIP)                                                                     
        **[Documentation](https://f-stop-lang.github.io/docs/)**
        
        #### Contributors
        
        1. **Tom-the-Bomb**   - Main dev of this impl
        2. **MrKomodoDragon** - Main dev of the `lark` implementation
        3. **Cryptex-github** - helps with the docs
        4. **Jay3332** - Helps with ideas, regex and other stuff
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.8
Description-Content-Type: text/markdown
