<?xml version="1.0" encoding="UTF-8" ?>
<class name="BitMap" inherits="Resource" version="3.6" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Boolean matrix.
	</brief_description>
	<description>
		A two-dimensional array of boolean values, can be used to efficiently store a binary matrix (every matrix element takes only one bit) and query the values using natural cartesian coordinates.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="convert_to_image" qualifiers="const">
			<return type="Image" />
			<description>
				Returns an image of the same size as the bitmap and with a [enum Image.Format] of type [code]FORMAT_L8[/code]. [code]true[/code] bits of the bitmap are being converted into white pixels, and [code]false[/code] bits into black.
			</description>
		</method>
		<method name="create">
			<return type="void" />
			<argument index="0" name="size" type="Vector2" />
			<description>
				Creates a bitmap with the specified size, filled with [code]false[/code].
			</description>
		</method>
		<method name="create_from_image_alpha">
			<return type="void" />
			<argument index="0" name="image" type="Image" />
			<argument index="1" name="threshold" type="float" default="0.1" />
			<description>
				Creates a bitmap that matches the given image dimensions, every element of the bitmap is set to [code]false[/code] if the alpha value of the image at that position is equal to [code]threshold[/code] or less, and [code]true[/code] in other case.
			</description>
		</method>
		<method name="get_bit" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="position" type="Vector2" />
			<description>
				Returns bitmap's value at the specified position.
			</description>
		</method>
		<method name="get_size" qualifiers="const">
			<return type="Vector2" />
			<description>
				Returns bitmap's dimensions.
			</description>
		</method>
		<method name="get_true_bit_count" qualifiers="const">
			<return type="int" />
			<description>
				Returns the amount of bitmap elements that are set to [code]true[/code].
			</description>
		</method>
		<method name="grow_mask">
			<return type="void" />
			<argument index="0" name="pixels" type="int" />
			<argument index="1" name="rect" type="Rect2" />
			<description>
				Applies morphological dilation or erosion to the bitmap. If [code]pixels[/code] is positive, dilation is applied to the bitmap. If [code]pixels[/code] is negative, erosion is applied to the bitmap. [code]rect[/code] defines the area where the morphological operation is applied. Pixels located outside the [code]rect[/code] are unaffected by [method grow_mask].
			</description>
		</method>
		<method name="opaque_to_polygons" qualifiers="const">
			<return type="Array" />
			<argument index="0" name="rect" type="Rect2" />
			<argument index="1" name="epsilon" type="float" default="2.0" />
			<description>
				Generates polygon outlines from the opaque (non-transparent) areas of the [BitMap] using a Marching Squares algorithm.
				Returns an [Array] of [PoolVector2Array], where each [PoolVector2Array] represents a polygon outline. These outlines can be directly assigned to the [code]polygon[/code] property of nodes like [CollisionPolygon2D] or [OccluderPolygon2D].
				The [code]epsilon[/code] parameter controls polygon simplification. A lower value produces more accurate polygons, but at the cost of increased polygon size and potential performance impact. A higher value simplifies the polygons, reducing their size and improving performance, but with less accuracy.
			</description>
		</method>
		<method name="resize">
			<return type="void" />
			<argument index="0" name="new_size" type="Vector2" />
			<description>
				Resizes the image to [code]new_size[/code].
			</description>
		</method>
		<method name="set_bit">
			<return type="void" />
			<argument index="0" name="position" type="Vector2" />
			<argument index="1" name="bit" type="bool" />
			<description>
				Sets the bitmap's element at the specified position, to the specified value.
			</description>
		</method>
		<method name="set_bit_rect">
			<return type="void" />
			<argument index="0" name="rect" type="Rect2" />
			<argument index="1" name="bit" type="bool" />
			<description>
				Sets a rectangular portion of the bitmap to the specified value.
			</description>
		</method>
	</methods>
	<constants>
	</constants>
</class>
