use super::color::*;
use super::identities::*;
use super::blend_mode::*;
use super::shader_type::*;
use super::render_target_type::*;
use crate::buffer::*;
use std::ops::{Range};
use std::sync::*;
#[derive(Clone, PartialEq, Debug)]
pub enum RenderAction {
SetTransform(Matrix),
CreateVertex2DBuffer(VertexBufferId, Vec<Vertex2D>),
CreateIndexBuffer(IndexBufferId, Vec<u16>),
FreeVertexBuffer(VertexBufferId),
FreeIndexBuffer(IndexBufferId),
BlendMode(BlendMode),
CreateRenderTarget(RenderTargetId, TextureId, usize, usize, RenderTargetType),
FreeRenderTarget(RenderTargetId),
SelectRenderTarget(RenderTargetId),
RenderToFrameBuffer,
ShowFrameBuffer,
DrawFrameBuffer(RenderTargetId, i32, i32),
CreateTextureBgra(TextureId, usize, usize),
CreateTextureMono(TextureId, usize, usize),
Create1DTextureBgra(TextureId, usize),
Create1DTextureMono(TextureId, usize),
WriteTextureData(TextureId, (usize, usize), (usize, usize), Arc<Vec<u8>>),
WriteTexture1D(TextureId, usize, usize, Arc<Vec<u8>>),
CreateMipMaps(TextureId),
CopyTexture(TextureId, TextureId),
FreeTexture(TextureId),
Clear(Rgba8),
UseShader(ShaderType),
DrawTriangles(VertexBufferId, Range<usize>),
DrawIndexedTriangles(VertexBufferId, IndexBufferId, usize)
}