<!DOCTYPE html>
<html>
<head>
<title>Integrating</title>
<link rel="stylesheet" href="styles.css">
</head>
<header>
<h1>Integrating</h1>
<hr>
</header>
<body>
<p>
Integrating LEXSDL in a existing project is easy.<br>
The only thing necessary is having access to the raw SDL_Window and SDL_Renderer.<br>
Bellow are examples on how to do it.<br>
The functions to be used are:<br>
<ul>
<a href=LEXSDL_SetWindow.html><span style=color:#FFFFFF>LEXSDL_SetWindow</span><span style=color:#66cf8d>();</span></a><br>
<a href=LEXSDL_SetRenderer.html><span style=color:#FFFFFF>LEXSDL_SetRenderer</span><span style=color:#66cf8d>();</span></a><br>
</ul>
</p>
<br>
<hr style=color:#0000CC>
<h2 id=cexample><h2 style=color:#0000CC>C</h2>
<p>This example can be run after clonning the <a href=https://gitlab.com/Alexevier/lexsdl.git>repo</a> as <code>"<span style=color:#0099ff><b>make</b></span> integrating"</code></p>
<ul>
<span style=color:#27ae60>#include<SDL2/SDL.h><br>
#include<LEXSDL/LEXSDL.h><br></span>
<br>
<span style=color:#2980b9>int</span> main<span style=color:#66cf8d>(</span><span style=color:#2980b9>void</span><span style=color:#66cf8d>){</span><br>
<span style=color:#a6a9aa>// this window and renderer would arleady be integrated in your code in some way.</span><br>
SDL_Window <span style=color:#66cf8d>*</span>yourWindow <span style=color:#66cf8d>=</span> SDL_CreateWindow<span style=color:#66cf8d>(</span><span style=color:#f44f4f>"LEXSDL C Example - Integrating"</span><span style=color:#66cf8d>,</span> SDL_WINDOWPOS_CENTERED<span style=color:#66cf8d>,</span>SDL_WINDOWPOS_CENTERED<span style=color:#66cf8d>,</span> <span style=color:#f67400>800</span><span style=color:#66cf8d>,</span><span style=color:#f67400>600</span><span style=color:#66cf8d>,</span> <span style=color:#f67400>0</span><span style=color:#66cf8d>);</span><br>
SDL_Renderer <span style=color:#66cf8d>*</span>yourRenderer <span style=color:#66cf8d>=</span> SDL_CreateRenderer<span style=color:#66cf8d>(</span>yourWindow<span style=color:#66cf8d>,</span> <span style=color:#f67400>-1</span><span style=color:#66cf8d>,</span> <span style=color:#f67400>0</span><span style=color:#66cf8d>);</span><br>
<br>
<span style=color:#a6a9aa>// set the window and renderer.</span><br>
LEXSDL_SetWindow<span style=color:#66cf8d>(</span>yourWindow<span style=color:#66cf8d>);</span><br>
LEXSDL_SetRenderer<span style=color:#66cf8d>(</span>yourRenderer<span style=color:#66cf8d>);</span><br>
<br>
<span style=color:#a6a9aa>//now functions of LEXSDL that depend on the renderer and window can be used.</span><br>
<br>
<span style=color:#a6a9aa>//set the background to a pink color.</span><br>
LEXSDL_SetBackgroundColor<span style=color:#66cf8d>(</span><span style=color:#f67400>0xee</span><span style=color:#66cf8d>,</span><span style=color:#f67400>0x70</span><span style=color:#66cf8d>,</span><span style=color:#f67400>0xb5</span><span style=color:#66cf8d>,</span><span style=color:#f67400>0xFF</span><span style=color:#66cf8d>);</span><br>
<br>
<span style=color:#a6a9aa>// and render</span><br>
LEXSDL_NewFrame<span style=color:#66cf8d>();</span><br>
LEXSDL_ShowFrame<span style=color:#66cf8d>();</span><br>
<br>
<span style=color:#a6a9aa>// sleep for 3 seconds</span><br>
sleep<span style=color:#66cf8d>(</span><span style=color:#f67400>3</span><span style=color:#66cf8d>);</span><br>
<span style=color:#66cf8d>}</span>
</ul>
<br>
<hr style=color:#e33b26>
<h2 style=color:#e33b26>Rust</h2>
<p>This example can be run after clonning the <a href=https://gitlab.com/Alexevier/lexsdl.git>repo</a> as <code>"<span style=color:#0099ff><b>cargo</b></span> run <span style=color:#2980b9>--example</span> integrating"</code></p>
<code><ul>
<b>use</b> <span style=color:#27ae60>lexsdl::*;</span><br>
<br>
<b>fn</b> main()<span style=color:#66CF8D>{</span><br>
<span style=color:#a6a9aa>// initialize sdl</span><br>
<b>let</b> sdl_context <span style=color:#66CF8D>=</span> <span style=color:#27ae60>sdl2</span><span style=color:#66CF8D>::</span>init()<span style=color:#66CF8D>.</span>unwrap()<span style=color:#66CF8D>;</span><br>
<b>let</b> video_subsystem <span style=color:#66CF8D>=</span> sdl_context<span style=color:#66CF8D>.</span>video()<span style=color:#66CF8D>.</span>unwrap()<span style=color:#66CF8D>;</span><br>
<br>
<span style=color:#a6a9aa>// create window and canvas</span><br>
<b>let</b> window <span style=color:#66CF8D>=</span> video_subsystem<span style=color:#66CF8D>.</span>window(<span style=color:#f44f4f>"LEXSDL Rust Example - integrating"</span><span style=color:#66CF8D>,</span> <span style=color:#f67400>800</span><span style=color:#66CF8D>,</span><span style=color:#f67400>600</span>)<span style=color:#66CF8D>.</span>position_centered()<span style=color:#66CF8D>.</span>build()<span style=color:#66CF8D>.</span>unwrap()<span style=color:#66CF8D>;</span><br>
<b>let mut</b> canvas <span style=color:#66CF8D>=</span> window<span style=color:#66CF8D>.</span>into_canvas()<span style=color:#66CF8D>.</span>build()<span style=color:#66CF8D>.</span>unwrap()<span style=color:#66CF8D>;</span><br>
<br>
<span style=color:#a6a9aa>// to integrate</span><br>
<b>unsafe</b> <span style=color:#66CF8D>{</span><br>
<span style=color:#a6a9aa>// get the window pointer out of the canvas and set it.</span><br>
LEXSDL_SetWindow<span style=color:>(canvas<span style=color:#66CF8D>.</span>window_mut()<span style=color:#66CF8D>.</span>raw())<span style=color:#66CF8D>;</span><br>
<span style=color:#a6a9aa>// get the renderer pointer out of the canvas and set it.</span><br>
LEXSDL_SetRenderer(canvas<span style=color:#66CF8D>.</span>raw())<span style=color:#66CF8D>;</span><br>
<span style=color:#66CF8D>}</span><br>
<br>
<span style=color:#a6a9aa>// now LEXSDL can be normally used.</span><br>
<b>unsafe</b> <span style=color:#66CF8D>{</span><br>
<span style=color:#a6a9aa>// set the backgroud to a lime color.</span><br>
LEXSDL_SetBackgroundColor(<span style=color:#F67400>0x7D</span><span style=color:#66CF8D>,</span><span style=color:#F67400>0xBF</span><span style=color:#66CF8D>,</span><span style=color:#F67400>0x2F</span><span style=color:#66CF8D>,</span><span style=color:#F67400>0xFF</span>)<span style=color:#66CF8D>;</span><br>
<br>
<span style=color:#a6a9aa>// and render</span><br>
LEXSDL_NewFrame()<span style=color:#66CF8D>;</span><br>
LEXSDL_ShowFrame()<span style=color:#66CF8D>;</span><br>
<span style=color:#66CF8D>}</span><br>
<br>
<span style=color:#a6a9aa>// sleep for 3 seconds before exiting.</span><br>
<span style=color:#27ae60>std::thread::</span>sleep(<span style=color:#27ae60>std::time::Duration::</span>from_secs(<span style=color:#F67400>3</span>))<span style=color:#66CF8D>;</span><br>
<span style=color:#66CF8D>}</span><br>
</ul></code>
</body>
<footer>
<br>
<hr>
<a href=FrontPage.html>FrontPage</a> <b>|</b> <a href=https://gitlab.com/Alexevier/lexsdl>GitLab</a> <b>|</b> <a href=https://crates.io/crates/lexsdl>Crates.io</a>
</footer>
</html>