<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorResourcePreviewGenerator" inherits="RefCounted" api_type="editor" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Custom generator of previews.
	</brief_description>
	<description>
		Custom code to generate previews. Check [member EditorSettings.filesystem/file_dialog/thumbnail_size] to find a proper size to generate previews at.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="_can_generate_small_preview" qualifiers="virtual const">
			<return type="bool" />
			<description>
				If this function returns [code]true[/code], the generator will call [method _generate] or [method _generate_from_path] for small previews as well.
				By default, it returns [code]false[/code].
			</description>
		</method>
		<method name="_generate" qualifiers="virtual required const">
			<return type="Texture2D" />
			<param index="0" name="resource" type="Resource" />
			<param index="1" name="size" type="Vector2i" />
			<param index="2" name="metadata" type="Dictionary" />
			<description>
				Generate a preview from a given resource with the specified size. This must always be implemented.
				Returning [code]null[/code] is an OK way to fail and let another generator take care.
				Care must be taken because this function is always called from a thread (not the main thread).
				[param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.).
			</description>
		</method>
		<method name="_generate_from_path" qualifiers="virtual const">
			<return type="Texture2D" />
			<param index="0" name="path" type="String" />
			<param index="1" name="size" type="Vector2i" />
			<param index="2" name="metadata" type="Dictionary" />
			<description>
				Generate a preview directly from a path with the specified size. Implementing this is optional, as default code will load and call [method _generate].
				Returning [code]null[/code] is an OK way to fail and let another generator take care.
				Care must be taken because this function is always called from a thread (not the main thread).
				[param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.).
			</description>
		</method>
		<method name="_generate_small_preview_automatically" qualifiers="virtual const">
			<return type="bool" />
			<description>
				If this function returns [code]true[/code], the generator will automatically generate the small previews from the normal preview texture generated by the methods [method _generate] or [method _generate_from_path].
				By default, it returns [code]false[/code].
			</description>
		</method>
		<method name="_handles" qualifiers="virtual required const">
			<return type="bool" />
			<param index="0" name="type" type="String" />
			<description>
				Returns [code]true[/code] if your generator supports the resource of type [param type].
			</description>
		</method>
		<method name="request_draw_and_wait" qualifiers="const">
			<return type="void" />
			<param index="0" name="viewport" type="RID" />
			<description>
				Call from within [method _generate] to request the rendering server draw to the [param viewport].
			</description>
		</method>
	</methods>
</class>
