def get_surface_map(self, size, foreground_color, background_color, outline_color):
        """Return dict w/ surfaces of given styles.

        Parameters
        ==========
        See __init__ method docstring for information on
        the parameters.
        """
        ### define padding
        padding = 2

        ### calculate a padded size by removing padding
        ### two times from the size (to account for padding
        ### on both sides); we do so because the padding is
        ### added back to the surface when rendering the
        ### icon with the 'padding' argument
        padded_size = size - (padding * 2)

        ### create a surface to be displayed when the
        ### checkbutton is set to True; we do so by
        ### rendering a surface which represents the heavy
        ### check mark icon, with padding and a border;

        true_surf = render_layered_icon(
            chars=[chr(124)],
            dimension_name="height",
            dimension_value=padded_size,
            padding=padding,
            colors=[foreground_color],
            background_width=size,
            background_height=size,
            background_color=background_color,
            border_thickness=2,
            border_color=outline_color,
        )

        ### now create a surface for when the checkbutton
        ### is set to False

        ## copy the "true surf" and fill it with the
        ## background color

        false_surf = true_surf.copy()
        false_surf.fill(background_color)

        ## then draw a border around it

        draw_border(false_surf, color=outline_color, thickness=2)

        ### create and return dict mapping each boolean value
        ### to its corresponding surface

        return {False: false_surf, True: true_surf}
Return dict w/ surfaces of given styles.

        Parameters
        ==========
        See __init__ method docstring for information on
        the parameters.
        
nodezator/widget/checkbutton.py