summaryrefslogtreecommitdiff
path: root/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'main.h')
-rw-r--r--main.h63
1 files changed, 53 insertions, 10 deletions
diff --git a/main.h b/main.h
index 965cef7..da099cc 100644
--- a/main.h
+++ b/main.h
@@ -30,6 +30,7 @@ enum memory_table_list {
P_AVInfo,
P_SourceBitmapTable,
+ P_MiscCache, // don't put this in final
F_Layers,
F_Effects,
@@ -66,6 +67,7 @@ struct cached_bitmap {
struct memory {
memory_table Slot[16];
cached_bitmap Bitmap[4096];
+ void *Scratch; // 64 MB of data
};
struct property_channel;
@@ -125,6 +127,27 @@ enum blend_mode
blend_difference
};
+struct gl_vertex_shader {
+};
+
+struct gl_effect {
+ uint32 FragmentShader;
+ uint32 ShaderProgram;
+ uint32 VertexShader;
+ uint32 EBO;
+ uint32 VBO;
+};
+
+static gl_effect TGL;
+
+struct gl_effect_layer {
+ GLuint Texture;
+ GLuint FBO;
+ GLuint RBO;
+};
+
+static gl_vertex_shader GL_Vertices;
+
union val {
real32 f;
v4 col;
@@ -216,6 +239,12 @@ struct layer_bitmap_info {
// Image and video
void *BitmapBuffer; // Each layer has a persistent bitmap that the source data gets packed into.
bool32 ToUpdate = 1;
+ gl_effect_layer Test;
+
+ // TODO(fox): Find a better place to store this. Either give effects a more
+ // fleshed-out API to add things to a struct like this or integrate into ImGui.
+ void *HistogramVals; // 256*5 packed floats (all channel average + RGBA).
+ uint16 LevelsSelector; // Which channel is currently active
// Video only
int32 FrameOffset; // the "true" position of video layers, separate from StartFrame
@@ -245,6 +274,7 @@ struct effect {
void (*func)(source *, layer_bitmap_info *, memory *, property_channel []);
uint16 NumberOfProperties;
display_type DisplayType;
+ gl_effect GL_Effect;
property_channel Property[MAX_PROPERTIES_PER_EFFECT];
bool32 UIIsCollapsed = 0;
bool32 IsActive = 1;
@@ -271,6 +301,18 @@ struct transform_info {
void *SourceBuffer;
};
+struct mask_point {
+ v2 Pos;
+ bool32 HandleBezier;
+ v2 TangentLeft;
+ v2 TangentRight;
+};
+
+struct mask {
+ mask_point Point[16];
+ uint16 NumberOfPoints;
+};
+
struct project_layer {
char *Name;
blend_mode BlendMode;
@@ -299,6 +341,9 @@ struct project_layer {
effect *Effect[MAX_EFFECTS];
uint16 NumberOfEffects;
+ mask Mask[MAX_MASKS];
+ uint16 NumberOfMasks;
+
int32 StartFrame;
int32 EndFrame;
@@ -343,18 +388,10 @@ struct project_data
uint16 NumberOfLayers;
source Source[MAX_SOURCES];
+ uint32 SourceSelected;
uint16 NumberOfSources;
};
-enum tool {
- DefaultSelect,
- BrushTool,
- CropTool,
- BoxSelect,
- QuickSelect,
- PenTool
-};
-
enum transforms_hotkey_interact {
sliding_position,
sliding_anchorpoint,
@@ -379,12 +416,18 @@ enum selection_type
selection_keyframe,
};
+enum tool {
+ tool_default,
+ tool_pen
+};
+
struct project_state
{
bool32 UpdateKeyframes = 1;
bool32 UpdateFrame = 1; // only refreshes frame; set UpdateKeyframes to update animation
bool32 DebugDisableCache = 1;
- tool Tool = DefaultSelect;
+
+ tool Tool = tool_default;
uint16 LayersToRender[MAX_LAYERS];
uint16 NumberOfLayersToRender;