-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
… Compatibility Check)
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
name: PHP | ||
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
|
||
jobs: | ||
php-cs-fixer: | ||
name: PHP CS Fixer | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Setup PHP | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: '7.4' | ||
extensions: xml | ||
|
||
- uses: actions/checkout@v4 | ||
|
||
- name: Validate composer config | ||
run: composer validate --strict | ||
|
||
- name: Composer Install | ||
run: composer global require friendsofphp/php-cs-fixer | ||
|
||
- name: Add environment path | ||
run: export PATH="$PATH:$HOME/.composer/vendor/bin" | ||
|
||
- name: Run PHPCSFixer | ||
run: php-cs-fixer fix --dry-run --diff | ||
|
||
phpstan: | ||
name: PHP Static Analysis | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
php: | ||
- '7.1' | ||
- '7.2' | ||
- '7.3' | ||
- '7.4' | ||
- '8.0' | ||
- '8.1' | ||
- '8.2' | ||
- '8.3' | ||
steps: | ||
- name: Setup PHP | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php }} | ||
extensions: xml | ||
|
||
- uses: actions/checkout@v4 | ||
|
||
- name: Composer Install | ||
run: composer install --ansi --prefer-dist --no-interaction --no-progress | ||
|
||
- name: Run phpstan | ||
run: ./vendor/bin/phpstan analyse -c phpstan.neon.dist | ||
|
||
phpunit: | ||
name: PHPUnit | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
php: | ||
- '7.1' | ||
- '7.2' | ||
- '7.3' | ||
- '7.4' | ||
- '8.0' | ||
- '8.1' | ||
- '8.2' | ||
- '8.3' | ||
steps: | ||
- name: Setup PHP | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php }} | ||
extensions: xml | ||
coverage: ${{ (matrix.php == '8.1') && 'xdebug' || 'none' }} | ||
|
||
- uses: actions/checkout@v4 | ||
|
||
- name: Install dependencies | ||
run: composer install --ansi --prefer-dist --no-interaction --no-progress | ||
|
||
- name: Run PHPUnit | ||
if: matrix.php != '8.1' | ||
run: ./vendor/bin/phpunit -c phpunit.xml.dist | ||
|
||
- name: Run PHPUnit (w CodeCoverage) | ||
if: matrix.php == '8.1' | ||
run: XDEBUG_MODE=coverage ./vendor/bin/phpunit -c phpunit.xml.dist --coverage-clover build/clover.xml | ||
|
||
- name: Upload coverage results to Coveralls | ||
if: matrix.php == '8.1' | ||
env: | ||
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.4.3/php-coveralls.phar | ||
chmod +x php-coveralls.phar | ||
php php-coveralls.phar --coverage_clover=build/clover.xml --json_path=build/coveralls-upload.json -vvv | ||
#roave-backwards-compatibility-check: | ||
# name: Roave Backwards Compatibility Check | ||
# runs-on: ubuntu-latest | ||
# steps: | ||
# - uses: actions/checkout@v4 | ||
# with: | ||
# fetch-depth: 0 | ||
# - name: "Check for BC breaks" | ||
# run: docker run -u $(id -u) -v $(pwd):/app nyholm/roave-bc-check-ga |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<?php | ||
|
||
$config = new PhpCsFixer\Config(); | ||
|
||
$config | ||
->setUsingCache(true) | ||
->setRiskyAllowed(true) | ||
->setRules([ | ||
'@Symfony' => true, | ||
'array_indentation' => true, | ||
'cast_spaces' => [ | ||
'space' => 'single', | ||
], | ||
'combine_consecutive_issets' => true, | ||
'concat_space' => [ | ||
'spacing' => 'one', | ||
], | ||
'error_suppression' => [ | ||
'mute_deprecation_error' => false, | ||
'noise_remaining_usages' => false, | ||
'noise_remaining_usages_exclude' => [], | ||
], | ||
'function_to_constant' => false, | ||
'global_namespace_import' => true, | ||
'method_chaining_indentation' => true, | ||
'no_alias_functions' => false, | ||
'no_superfluous_phpdoc_tags' => false, | ||
'non_printable_character' => [ | ||
'use_escape_sequences_in_strings' => true, | ||
], | ||
'phpdoc_align' => [ | ||
'align' => 'left', | ||
], | ||
'phpdoc_summary' => false, | ||
'protected_to_private' => false, | ||
'self_accessor' => false, | ||
'yoda_style' => false, | ||
'single_line_throw' => false, | ||
'no_alias_language_construct_call' => false, | ||
]) | ||
->getFinder() | ||
->in(__DIR__) | ||
->exclude('vendor'); | ||
|
||
return $config; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
parameters: | ||
level: 7 | ||
bootstrapFiles: | ||
- vendor/autoload.php | ||
paths: | ||
- src | ||
- tests | ||
reportUnmatchedIgnoredErrors: false | ||
ignoreErrors: |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,13 +4,13 @@ | |
|
||
namespace PhpOffice\WMF\Reader; | ||
|
||
use GdImage; | ||
use PhpOffice\WMF\Exception\WMFException; | ||
use function imagedestroy; | ||
|
||
class GD implements ReaderInterface | ||
{ | ||
/** | ||
* @var resource | ||
* @var GdImage|false | ||
*/ | ||
protected $gd; | ||
Check failure on line 15 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.2)
Check failure on line 15 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.4)
Check failure on line 15 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.3)
|
||
/** | ||
|
@@ -41,6 +41,10 @@ class GD implements ReaderInterface | |
* @var int | ||
*/ | ||
protected $unitPerInch; | ||
/** | ||
* @var array<array<>> | ||
*/ | ||
protected $gdiObjects = []; | ||
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.2)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.2)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.1)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.1)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.2)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.2)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.0)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.0)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.4)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.4)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.3)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.3)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.1)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.1)
Check failure on line 47 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.3)
|
||
|
||
const META_EOF = 0x0000; | ||
const META_SETPOLYFILLMODE = 0x0106; | ||
|
@@ -52,8 +56,6 @@ class GD implements ReaderInterface | |
const META_CREATEBRUSHINDIRECT = 0x02FC; | ||
const META_POLYGON = 0x0324; | ||
|
||
protected $gdiObjects = []; | ||
|
||
public function __destruct() | ||
{ | ||
if ($this->gd){ | ||
|
@@ -82,6 +84,8 @@ public function load(string $filename): bool | |
$recordEnd = false; | ||
|
||
$dataFillColor = $dataDrawColor = null; | ||
$nullPen = $nullBrush = false; | ||
$dashArray = []; | ||
$modePolyFill = 0; | ||
|
||
while ($this->pos < $contentLen && !$recordEnd) { | ||
|
@@ -91,6 +95,7 @@ public function load(string $filename): bool | |
list(,$recordType) = unpack('S', substr($this->content, $this->pos, 2)); | ||
Check failure on line 95 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.2)
Check failure on line 95 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.1)
Check failure on line 95 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.2)
Check failure on line 95 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (8.0)
Check failure on line 95 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.4)
Check failure on line 95 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.3)
Check failure on line 95 in src/WMF/Reader/GD.php GitHub Actions / PHP Static Analysis (7.1)
|
||
$this->pos += 2; | ||
|
||
$params = []; | ||
if ($size > 3) { | ||
$params = substr($this->content, $this->pos, 2 * ($size - 3)); | ||
$this->pos += 2 * ($size - 3); | ||
|
@@ -171,7 +176,6 @@ public function load(string $filename): bool | |
break; | ||
case self::META_SETWINDOWEXT: | ||
// Do not allow window extent to be changed after drawing has begun | ||
var_dump('META_SETWINDOWEXT'); | ||
if (!$this->windowWidth) { | ||
$windowExtent = array_reverse(unpack('s2', $params)); | ||
$this->windowWidth = (int) $windowExtent[0]; | ||
|
@@ -219,7 +223,11 @@ public function load(string $filename): bool | |
$op = 'n'; | ||
} else { | ||
// Fill | ||
\imagefilledpolygon($this->gd, $points, $dataFillColor); | ||
if (\PHP_VERSION_ID < 80000) { | ||
imagefilledpolygon($this->gd, $points, $numpoints, $dataFillColor); | ||
} else { | ||
imagefilledpolygon($this->gd, $points, $dataFillColor); | ||
} | ||
} | ||
} else { | ||
if ($nullBrush) { | ||
|
@@ -228,7 +236,11 @@ public function load(string $filename): bool | |
} else { | ||
// Stroke and Fill | ||
\imagepolygon($this->gd, $points, $numpoints, $dataDrawColor); | ||
\imagefilledpolygon($this->gd, $points, $dataFillColor); | ||
if (\PHP_VERSION_ID < 80000) { | ||
imagefilledpolygon($this->gd, $points, $numpoints, $dataFillColor); | ||
} else { | ||
imagefilledpolygon($this->gd, $points, $dataFillColor); | ||
} | ||
} | ||
} | ||
if ($modePolyFill == 1 && (($nullPen && !$nullBrush) || (!$nullPen && $nullBrush))) { | ||
|
@@ -284,8 +296,8 @@ public function getResource() | |
|
||
$this->gd = imagescale( | ||
$this->gd, | ||
ceil(($this->windowWidth/$this->unitPerInch) * $inchToPoint), | ||
ceil(($this->windowHeight/$this->unitPerInch) * $inchToPoint) | ||
(int) ceil(($this->windowWidth/$this->unitPerInch) * $inchToPoint), | ||
(int) ceil(($this->windowHeight/$this->unitPerInch) * $inchToPoint) | ||
); | ||
imagesavealpha($this->gd, true); | ||
return $this->gd; | ||
|