com presentations: tweaks: slides/intro/php74_201 9.xml slides/intro/test.gif
[email protected] (Rasmus Lerdorf) Thu, 28 Feb 2019 16:54:02 +0000
| Newsgroups | php.pres |
|---|---|
| Message-ID | <[email protected]> |
Commit: 40884c16371f45458b7efaadcd7c32d33407e52e Author: Rasmus Lerdorf <[email protected]> Thu, 28 Feb 2019 16:53:42 +0000 Parents: 84f78f86dd8e8e1c82e5ad1be6545553cb1358f8 Branches: master Link: http://git.php.net/?p=presentations.git;a=commitdiff;h=40884c16371f45458b7efaadcd7c32d33407e52e Log: tweaks Changed paths: M slides/intro/php74_2019.xml A slides/intro/test.gif Diff: diff --git a/slides/intro/php74_2019.xml b/slides/intro/php74_2019.xml index ae577d5..e4ac521 100644 --- a/slides/intro/php74_2019.xml +++ b/slides/intro/php74_2019.xml @@ -17,6 +17,15 @@ class User { } ]]></example> +<break lines="1" section="null_coalesce_assign"/> + +<blurb fontsize="1em" align="left">Null Coalescing Assignment Operator</blurb> + +<example fontsize="1em" result='0' title="" type=""><![CDATA[<?php +$this->config['value'] = $this->config['value'] ?? 'default_value'; +$this->config['value'] ??= 'default_value'; +]]></example> + <break lines="1" section="php74_preload"/> <blurb fontsize="1em" align="left">Without Opcache Preloading</blurb> @@ -63,15 +72,6 @@ $ php -d opcache.preload=preload.php script.php A ]]></example> -<break lines="1" section="null_coalesce_assign"/> - -<blurb fontsize="1em" align="left">Null Coalescing Assignment Operator</blurb> - -<example fontsize="1em" result='0' title="" type=""><![CDATA[<?php -$this->config['value'] = $this->config['value'] ?? 'default_value'; -$this->config['value'] ??= 'default_value'; -]]></example> - <break lines="1" section="ffi"/> <blurb fontsize="1em" align="left">FFI - Foreign Function Interface</blurb> @@ -85,4 +85,51 @@ $ffi = FFI::cdef( $ffi->printf("Hello %s!\n", "world"); ]]></example> +<break lines="1" section="ffi_example"/> +<example fontsize="1em" result='0' title="" type=""><![CDATA[<?php +<?php + $ffi = FFI::load("php_gifenc.h"); + + $w = 240; $h = 180; + $cols = $ffi->new("uint8_t[12]"); + /* 4 colours: 000000, FF0000, 00FF00, 0000FF */ + $cols[3] = 0xFF; $cols[7] = 0xFF; $cols[11] = 0xFF; + + $gif = $ffi->ge_new_gif("test.gif", $w, $h, $cols, 2, 0); + + for($i = 0; $i < 16; $i++) { + for ($j = 0; $j < $w*$h; $j++) { + $gif->frame[$j] = ($i*6 + $j) / 12 % 8; + } + echo "Add frame $i\n"; + $ffi->ge_add_frame($gif, 5); + } + $ffi->ge_close_gif($gif); +]]></example> +<break lines="1" section="ffi_example_header"/> +<example fontsize="1em" result='0' title="" type=""><![CDATA[<?php +#define FFI_SCOPE "gifenc" +#define FFI_LIB "libgifenc.so" + +typedef struct ge_GIF { + uint16_t w, h; + int depth; + int fd; + int offset; + int nframes; + uint8_t *frame, *back; + uint32_t partial; + uint8_t buffer[0xFF]; +} ge_GIF; + +ge_GIF *ge_new_gif( + const char *fname, uint16_t width, uint16_t height, + uint8_t *palette, int depth, int loop +); +void ge_add_frame(ge_GIF *gif, uint16_t delay); +void ge_close_gif(ge_GIF* gif); +]]></example> + +<break lines="1" section="ffi_example_output"/> +<image width="240" height="180" filename="test.gif" align="center"/> </slide> diff --git a/slides/intro/test.gif b/slides/intro/test.gif new file mode 100644 index 0000000..60b48b9 Binary files /dev/null and b/slides/intro/test.gif differ