Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task 5: Filters #8

Open
paulushub opened this issue Nov 29, 2017 · 6 comments
Open

Task 5: Filters #8

paulushub opened this issue Nov 29, 2017 · 6 comments
Assignees

Comments

@paulushub
Copy link
Contributor

paulushub commented Nov 29, 2017

Implement filter support. The filter support in WPF 3.0 and 3.5 are software implemented and very slow and not usable in large documents.
WPF 4.0 introduced hardware accelerated filter support.

This work item was migrated from CodePlex

CodePlex work item ID: '411'
Vote count: '1'

@BlackGad
Copy link

BlackGad commented Feb 12, 2020

Missed feature for me :(

<?xml version="1.0" encoding="UTF-8"?>
<svg width="680px" height="480px" viewBox="0 0 680 480" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <title>Example</title>
    <desc>Example.</desc>
    <defs>
        <rect id="path-2" x="0" y="0" width="680" height="480"/>
        <filter x="-1.1%" y="-0.9%" width="102.3%" height="101.8%" filterUnits="objectBoundingBox" id="filter-21">
            <feOffset dx="1" dy="0.5" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
            <feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
            <feColorMatrix values="0 0 0 0 1   0 0 0 0 1   0 0 0 0 1  0 0 0 1 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
        </filter>
        <linearGradient x1="77.4142299%" y1="8.33333333%" x2="22.5857701%" y2="91.6666667%" id="linearGradient-19">
            <stop stop-color="#36AEFF" offset="0%"></stop>
            <stop stop-color="#FFFFFF" offset="100%"></stop>
        </linearGradient>
        <path d="M293.252894,93.3661447 C281.190743,100.622433 273.178571,117.249983 275.357206,130.504817 C277.535842,143.759651 289.080281,148.622433 301.142433,141.366145 C313.204584,134.109857 321.216757,117.482307 319.038121,104.227473 C316.859485,90.9726388 305.315046,86.1098566 293.252894,93.3661447 Z M294.196529,97.7675895 C303.977681,91.8015872 313.339022,95.7996878 315.10567,106.697597 C316.872317,117.595507 310.375278,131.266408 300.594125,137.23241 C290.812973,143.198413 281.451632,139.200312 279.684984,128.302403 C277.918337,117.404493 284.415377,103.733592 294.196529,97.7675895 Z" id="path-20"></path>
    </defs>
    <g id="SplashScreen_Illustration" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="Splash-screen">
            <mask id="mask-3" fill="white">
                <use xlink:href="#path-2"/>
            </mask>
            <g id="Shape" mask="url(#mask-3)">
                <use fill="url(#linearGradient-19)" fill-rule="evenodd" xlink:href="#path-20"/>
                <use fill="black" fill-opacity="1" filter="url(#filter-21)" xlink:href="#path-20"/>
            </g>
        </g>
    </g>
</svg>

Transforms to

<DrawingGroup>
    <DrawingGroup x:Name="DrawingLayer">
        <DrawingGroup.ClipGeometry>
            <RectangleGeometry Rect="0,0,680,480" />
        </DrawingGroup.ClipGeometry>
        <DrawingGroup x:Name="SplashScreen_Illustration">
            <DrawingGroup x:Name="Splash_screen">
                <DrawingGroup x:Name="Shape">
                    <DrawingGroup>
                        <GeometryDrawing x:Name="path_20">
                            <GeometryDrawing.Brush>
                                <DrawingBrush Viewbox="0,0,1,1" Stretch="Fill" Opacity="1">
                                    <DrawingBrush.Drawing>
                                        <GeometryDrawing>
                                            <GeometryDrawing.Brush>
                                                <LinearGradientBrush StartPoint="0.774142299,0.0833333333" EndPoint="0.225857701,0.916666667" MappingMode="RelativeToBoundingBox" SpreadMethod="Pad">
                                                    <GradientStop Color="#FF36AEFF" Offset="0" />
                                                    <GradientStop Color="#FFFFFFFF" Offset="1" />
                                                </LinearGradientBrush>
                                            </GeometryDrawing.Brush>
                                            <GeometryDrawing.Geometry>
                                                <RectangleGeometry Rect="0,0,1,1" />
                                            </GeometryDrawing.Geometry>
                                        </GeometryDrawing>
                                    </DrawingBrush.Drawing>
                                </DrawingBrush>
                            </GeometryDrawing.Brush>
                            <GeometryDrawing.Geometry>
                                <PathGeometry FillRule="EvenOdd" Figures="M293.252894,93.3661447C281.190743,100.622433 273.178571,117.249983 275.357206,130.504817 277.535842,143.759651 289.080281,148.622433 301.142433,141.366145 313.204584,134.109857 321.216757,117.482307 319.038121,104.227473 316.859485,90.9726388 305.315046,86.1098566 293.252894,93.3661447z M294.196529,97.7675895C303.977681,91.8015872 313.339022,95.7996878 315.10567,106.697597 316.872317,117.595507 310.375278,131.266408 300.594125,137.23241 290.812973,143.198413 281.451632,139.200312 279.684984,128.302403 277.918337,117.404493 284.415377,103.733592 294.196529,97.7675895z" />
                            </GeometryDrawing.Geometry>
                        </GeometryDrawing>
                    </DrawingGroup>
                    <DrawingGroup>
                        <GeometryDrawing Brush="#FF000000">
                            <GeometryDrawing.Geometry>
                                <PathGeometry FillRule="EvenOdd" Figures="M293.252894,93.3661447C281.190743,100.622433 273.178571,117.249983 275.357206,130.504817 277.535842,143.759651 289.080281,148.622433 301.142433,141.366145 313.204584,134.109857 321.216757,117.482307 319.038121,104.227473 316.859485,90.9726388 305.315046,86.1098566 293.252894,93.3661447z M294.196529,97.7675895C303.977681,91.8015872 313.339022,95.7996878 315.10567,106.697597 316.872317,117.595507 310.375278,131.266408 300.594125,137.23241 290.812973,143.198413 281.451632,139.200312 279.684984,128.302403 277.918337,117.404493 284.415377,103.733592 294.196529,97.7675895z" />
                            </GeometryDrawing.Geometry>
                        </GeometryDrawing>
                    </DrawingGroup>
                </DrawingGroup>
            </DrawingGroup>
        </DrawingGroup>
    </DrawingGroup>
</DrawingGroup>

Glory shadow become black hole %)

@paulushub
Copy link
Contributor Author

@BlackGad I hear you, sorry for the delay in supporting this feature.

@BlackGad
Copy link

@BlackGad I hear you, sorry for the delay in supporting this feature.

Anyway this is good library :) Hope it will not rest in silence.

@paulushub
Copy link
Contributor Author

Anyway this is good library :) Hope it will not rest in silence.

Thank you. Yes, there is an on going work on it. The changes to the SDK-style projects, support for Scripting (based on Jint, which is still lacking) and the need to add UWP rendering projects (which do not support SDK-style project) brought some confusion on how best to manage the projects, resulting on current delay.

@qsc-jhndnn
Copy link

Curious if there is an update on the plan to support filters?

@paulushub
Copy link
Contributor Author

Curious if there is an update on the plan to support filters?

Nothing much in this direction.
Sorry, I lost my day job because of the covid-19. Currently cycling through temporal contracts
in Python and Java! No time to do .NET stuff, hope I will pick up again soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants