mirror of
				https://github.com/nicbarker/clay.git
				synced 2025-11-04 08:36:17 +00:00 
			
		
		
		
	Merge ea3e29be5c into fd97d8179e
				
					
				
			This commit is contained in:
		
						commit
						eb9cf7f41a
					
				
							
								
								
									
										5
									
								
								bindings/D/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								bindings/D/README.md
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
### D Language Example
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
dmd main.d clay.c
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										2
									
								
								bindings/D/clay.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								bindings/D/clay.c
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
#define CLAY_IMPLEMENTATION
 | 
			
		||||
#include "../../clay.h"
 | 
			
		||||
							
								
								
									
										88
									
								
								bindings/D/main.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								bindings/D/main.d
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,88 @@
 | 
			
		|||
import clay;
 | 
			
		||||
 | 
			
		||||
import core.stdc.stdlib;
 | 
			
		||||
 | 
			
		||||
__gshared:
 | 
			
		||||
 | 
			
		||||
Clay_LayoutConfig layoutElement = { padding: {5} };
 | 
			
		||||
 | 
			
		||||
extern(C) void main()
 | 
			
		||||
{
 | 
			
		||||
    ulong totalMemorySize = Clay_MinMemorySize();
 | 
			
		||||
    Clay_Arena clayMemory = {
 | 
			
		||||
        label: str("Clay Memory Arena"),
 | 
			
		||||
        capacity: totalMemorySize,
 | 
			
		||||
        memory: cast(char*)malloc(totalMemorySize)
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Clay_Initialize(clayMemory, Clay_Dimensions(1024,768));
 | 
			
		||||
    Clay_BeginLayout();
 | 
			
		||||
    if (ClayBegin( Rectangle(color: Clay_Color(255,255,255,0)), Layout(layoutElement)))
 | 
			
		||||
    {   }
 | 
			
		||||
    ClayEnd();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// helper functions
 | 
			
		||||
Clay_String str(string it)
 | 
			
		||||
{
 | 
			
		||||
    return Clay_String(cast(int)it.length, it.ptr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ClayBegin(A...)(A configs)
 | 
			
		||||
{
 | 
			
		||||
    Clay__OpenElement();
 | 
			
		||||
    foreach(config; configs)
 | 
			
		||||
    {
 | 
			
		||||
        alias T = typeof(config);
 | 
			
		||||
        static if (is(T == Clay_ElementId))
 | 
			
		||||
        {
 | 
			
		||||
            Clay__AttachId(config);
 | 
			
		||||
        }
 | 
			
		||||
        else static if(is(T == Clay_LayoutConfig*))
 | 
			
		||||
        {
 | 
			
		||||
            Clay__AttachLayoutConfig(config);
 | 
			
		||||
        }
 | 
			
		||||
        else static if(is(T == Clay_ElementConfig))
 | 
			
		||||
        {
 | 
			
		||||
            Clay__AttachElementConfig(config.config, config.type);
 | 
			
		||||
        }
 | 
			
		||||
        else static assert(0, "unsupported " ~ typeof(config).stringof);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Clay__ElementPostConfiguration();
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ClayEnd()
 | 
			
		||||
{
 | 
			
		||||
    Clay__CloseElement();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Clay_ElementId Id(string label)
 | 
			
		||||
{
 | 
			
		||||
     return Clay__HashString(str(label), 0, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Clay_LayoutConfig* Layout(lazy Clay_Sizing sizing = Clay_Sizing.init)
 | 
			
		||||
{
 | 
			
		||||
    Clay_LayoutConfig config;
 | 
			
		||||
    config.sizing = sizing;
 | 
			
		||||
    return Clay__StoreLayoutConfig(config);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Clay_LayoutConfig* Layout(Clay_LayoutConfig config)
 | 
			
		||||
{
 | 
			
		||||
    return Clay__StoreLayoutConfig(config);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Clay_ElementConfig Rectangle(lazy Clay_Color color = Clay_Color.init)
 | 
			
		||||
{
 | 
			
		||||
    Clay_RectangleElementConfig config;
 | 
			
		||||
    config.color = color;
 | 
			
		||||
 | 
			
		||||
    Clay_ElementConfig ret;
 | 
			
		||||
    ret.type = Clay__ElementConfigType.CLAY__ELEMENT_CONFIG_TYPE_RECTANGLE;
 | 
			
		||||
    ret.config.rectangleElementConfig = Clay__StoreRectangleElementConfig(config);
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in a new issue