Configuration.php 2.96 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
<?php

/*
 * (c) Jeroen van den Enden <info@endroid.nl>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

namespace Endroid\QrCode\Bundle\QrCodeBundle\DependencyInjection;

use Endroid\QrCode\ErrorCorrectionLevel;
use Endroid\QrCode\LabelAlignment;
use Predis\Response\Error;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

class Configuration implements ConfigurationInterface
{
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();

        $treeBuilder
            ->root('endroid_qr_code')
                ->children()
                    ->scalarNode('writer')->end()
                    ->integerNode('size')->min(0)->end()
                    ->integerNode('margin')->min(0)->end()
                    ->scalarNode('encoding')->defaultValue('UTF-8')->end()
                    ->scalarNode('error_correction_level')
                        ->validate()
                            ->ifNotInArray(ErrorCorrectionLevel::toArray())
                            ->thenInvalid('Invalid error correction level %s')
                        ->end()
                    ->end()
                    ->arrayNode('foreground_color')
                        ->children()
                            ->scalarNode('r')->isRequired()->end()
                            ->scalarNode('g')->isRequired()->end()
                            ->scalarNode('b')->isRequired()->end()
                        ->end()
                    ->end()
                    ->arrayNode('background_color')
                        ->children()
                            ->scalarNode('r')->isRequired()->end()
                            ->scalarNode('g')->isRequired()->end()
                            ->scalarNode('b')->isRequired()->end()
                        ->end()
                    ->end()
                    ->scalarNode('logo_path')->end()
                    ->integerNode('logo_width')->end()
                    ->scalarNode('label')->end()
                    ->integerNode('label_font_size')->end()
                    ->scalarNode('label_font_path')->end()
                    ->scalarNode('label_alignment')
                        ->validate()
                            ->ifNotInArray(LabelAlignment::toArray())
                            ->thenInvalid('Invalid label alignment %s')
                        ->end()
                    ->end()
                    ->arrayNode('label_margin')
                        ->children()
                            ->scalarNode('t')->end()
                            ->scalarNode('r')->end()
                            ->scalarNode('b')->end()
                            ->scalarNode('l')->end()
                        ->end()
                    ->end()
                    ->booleanNode('validate_result')->end()
                ->end()
            ->end()
        ;

        return $treeBuilder;
    }
}