Skip to content

Add bmp headerdocs#118

Open
sam-stajnko wants to merge 13 commits intothoth-tech:mainfrom
sam-stajnko:add_bmp_headerdocs
Open

Add bmp headerdocs#118
sam-stajnko wants to merge 13 commits intothoth-tech:mainfrom
sam-stajnko:add_bmp_headerdocs

Conversation

@sam-stajnko
Copy link

Description

If you have ever looked at the header files (.h) in the core-sdk folder, you might've noticed the attribute tags above some of the function declarations. These are called 'HeaderDoc' attributes and they are used by the translator when the source code is translated from C++ into the different target languages such as Python, C# and Pascal. There are four different attributes that you should be aware of:

  • class: this is the class that you want to have the function as a method.
  • method: when the function is added to the class as a method, this will be the method name.
  • suffix: if multiple overloads exist for the function, this is used to distinguish them from one another.
  • self: when looking at the signature of the function, self is the parameter in the argument list that you want to be the class instance.

Many functions in the Splashkit Core Library are missing attributes in the header documentation and therefore, the translator is failing to generate methods for the C# implementation. To fix this, I have searched through the repository for functions that are missing attributes in the header file and then added the attributes.

This has been done for the following bitmap functions:

  • random_bitmap_point
  • current_clip
  • pop_clip
  • push_clip
  • reset_clip
  • set_clip
  • option_draw_to
  • save_bitmap
  • bitmap_valid
  • get_pixel
  • bitmap_button

Fixes # (issue)

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as
    expected)
  • Documentation (update or new)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can
reproduce. Please also list any relevant details for your test configuration

To test this pull request, you can run the translator and check the generated C# source code and api.json files. The file api.json lists the signatures of all generated functions so by looking for the functions where header documentation has been added, it should be easy to find out if they are being successfully generated as methods to their relevant class.

If you don't want to run the translator, you don't have to. I have run the translator in one of my commits but I reverted the changes afterwards. Therefore, simply go through the commit history and find the one that is named "Generate Files".

As a word of caution, I don't think the generator has been run on the main repo for a while so there is probably a lot of generated material that isn't related to this pull request.

Testing Checklist

  • Tested by checking api.json after running translator
  • Tested by checking generated C# source code after running translator

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have requested a review from ... on the Pull Request

Copy link

@Oliver-Quail Oliver-Quail left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @sam-stajnko,

I have tested your PR locally and have no issues with this PR. I have also found no issues with your code. I approve this PR

Copy link

@rory-cd rory-cd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR clearly states the problem and addresses it, adding missing function attribute tags to ensure the translator runs correctly.

Testing

  • Pulled PR branch and ran SplashKit Translator
  • Checked generated files api.json (Doc) and SplashKit.cs (C# bindings)
  • Ensured each affected function has a C# method being generated.

Example outputs

For bool bitmap_button(bitmap bmp, const rectangle& rect);
From api.json:

        "attributes": {
          "class": "bitmap",
          "method": "button",
          "self": "bmp",
          "suffix": "at_position",
          "group": "interface",
          "static": "interface"
        },

From SplashKit.cs:

    /// Creates a button with a bitmap in it at a specific position on screen. Returns whether the button was clicked.
    /// </summary>
    /// <param name="bmp"> The bitmap to show inside the button</param>
    /// <param name="rect"> The rectangle to display the button in</param>
    /// <returns>Whether the button was clicked</returns>
    public static bool BitmapButton(Bitmap bmp, Rectangle rect)
    {
      __sklib_ptr __skparam__bmp;
      __sklib_rectangle __skparam__rect;
      int __skreturn;
      __skparam__bmp = __skadapter__to_sklib_bitmap(bmp);
      __skparam__rect = __skadapter__to_sklib_rectangle(rect);
      __skreturn = __sklib__bitmap_button__bitmap__rectangle_ref(__skparam__bmp, __skparam__rect);
      return __skadapter__to_bool(__skreturn);
    }```

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants