Jump to content

424 posts in this topic

Recommended Posts

References using #id need the object with that id to be defined before being used because nanosvg doesn't have a forward declaration mechanism, they are just disregarded instead.

 

EDIT: Just for clarification, you are referencing #icon_1_ on line 54 but icon_1_ is not defined until line 161, etc.

Edited by apianti

Share this post


Link to post
Share on other sites
Advertisement
5 hours ago, apianti said:

References using #id need the object with that id to be defined before being used because nanosvg doesn't have a forward declaration mechanism, they are just disregarded instead.

 

EDIT: Just for clarification, you are referencing #icon_1_ on line 54 but icon_1_ is not defined until line 161, etc.

Thanks for notice. It is not exact reason because we have forward declaration mechanism for gradients but only for explicit shapes. Now I see it is not working for symbols.

Will be corrected soon...

 

PS. nsvg__assignGradients() should do the work

PPS. "OSicon os_mac not parsed" is another bug. shape->group is not defined

Share this post


Link to post
Share on other sites
8 hours ago, apianti said:

References using #id need the object with that id to be defined before being used because nanosvg doesn't have a forward declaration mechanism, they are just disregarded instead.

 

EDIT: Just for clarification, you are referencing #icon_1_ on line 54 but icon_1_ is not defined until line 161, etc.

Good spot and thanks for the reminder.

Though this was just a quick hand built test without thought.

 

2 hours ago, Slice said:

Thanks for notice. It is not exact reason because we have forward declaration mechanism for gradients but only for explicit shapes. Now I see it is not working for symbols.

Will be corrected soon...

 

PS. nsvg__assignGradients() should do the work

PPS. "OSicon os_mac not parsed" is another bug. shape->group is not defined

 

Thanks Slice. Working now :)

Share this post


Link to post
Share on other sites
3 hours ago, Slice said:

Thanks for notice. It is not exact reason because we have forward declaration mechanism for gradients but only for explicit shapes. Now I see it is not working for symbols.

Will be corrected soon...

 

PS. nsvg__assignGradients() should do the work

PPS. "OSicon os_mac not parsed" is another bug. shape->group is not defined

 

Only gradients and clip paths have forward declaration but no other object type. Look at nsvg__createGradientLink, nsvg__assignGradients, nsvg__createClipPath, and nsvg__findClipPath... Every object that can have the core attribute id (I think pretty much every element in an SVG can) should be able to be forward declared but the way that nanosvg is designed does not allow for this. The ids should not try to be resolved until after the entire source is parsed but that is only the case for just gradients and clip paths... Everything else is attempted to be resolved when parsed. If you look at nsvg__parseUse, just returns if the id is not found when parsed. The only other ids that are resolved are patterns in nsvg__addShape, but they are also in place and don't resolve unless already defined. I believe there is a problem with ParseSVGIcon, should it not parse the groups recursively and the shapes as well looking for the icon? I think that's why it's not finding that icon even though it is present in the SVG.

 

EDIT: I mean SVGimage->groups and SVGimage->shapes, recursively since they could be any number deep nested inside either of those.

EDIT2: Since the "os_mac" icon is a group under the "OSBadges" group, the groups directly under SVGimage->groups are never used so it can't be found even though its there.

 

 

Edited by apianti

Share this post


Link to post
Share on other sites

It will be better to sort shapes during parsing to keep different queue of shapes for different groups. In this case we can <use xlink:href="#group1"..> we can't with existing codes.

Yes, forward declaration is only for gradients and clips so we have to define symbols at very begin of svg file to be able to use it later.

About os_mac I already resolved the issue.

Share this post


Link to post
Share on other sites

I'm confused, it appears from the code that this is already happening, albeit in a totally weird way. There are two separate linked lists, image->groups and image->shapes. image->groups is a tree hierarchy of groups with shapes, the other is a list of every shape. So what I was proposing would do exactly that, recursively search image->groups first (parents then nexts, or vice versa), then if not found search image->shapes, since we may be looking for the id of a group or shape. Look here and here. Also, nanosvg is a complete mess that really barely does what its supposed to and the design is basically not sustainable for actual usage beyond a simple few paths svg that will be drawn individually. The nsvg__parseUse needs to be modified to just hold a link reference to the id it's looking for and then assign/create the objects after parsing like with gradients. It also does not search for any id that doesn't belong to a symbol or path, which is incorrect, as you stated.

 

EDIT: Also you appear to be directly modifying the linked list for shapes, instead of duplicating the list for rasterization.

Edited by apianti

Share this post


Link to post
Share on other sites

I proposed to exclude shapes from list that already rendered to speedup parsing. Yes, I know it is dangerous because we can't search one shape twice. But I think it will not happen.

I agree it will be better to sort shapes initially making lists by every group but it requires more overthinking.

Share this post


Link to post
Share on other sites

You could maintain a separate list of already rendered shapes, and search that first then or the use element makes no sense, it needs to be able to use shapes multiple times. I am pretty sure that the groups are already sorted, at least from looking at the nanosvg source that's the way it appears to be working but just upside down, the inner most groups point towards the outer most. Truthfully, I really don't think he thought about how to design before he ran into each individual problem then solved them in ways that would not require changing what he'd already done. This resulted in a lot of incorrect behavior.

Share this post


Link to post
Share on other sites

I've been having trouble creating an image using symbols that renders correctly in both Clover and Illustrator. If an image fit together correctly in one, it would fail in another.

 

After some experiments it appears Illustrator requires the size and position of objects to be described when calling a symbol and does not take these from the symbol itself, where as Clover will take these values from the symbol which I believe is what's supposed to happen.

 

So the only way I've managed to get an image to correctly draw in both Clover and Illustrator is to add placement values when calling the symbol.

 

Basic rectangles:
Clover draws boxes correctly, but Illustrator draws all 3 boxes the same size

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve">
     
<symbol id="SquareYellow">
  <rect style="fill:#FFFFFF;stroke:#E2DD24" x="0" y="0" width="128" height="128"/>
</symbol>
<symbol id="SquareGreen">
  <rect style="fill:#FFFFFF;stroke:#41AD51" x="16.3" y="16.3" width="95.4" height="95.4"/>
</symbol>
<symbol id="SquareRed">
  <rect style="fill:#FFFFFF;stroke:#E84325" x="35.9" y="35.9" width="56.3" height="56.3"/>
</symbol>
<use xlink:href="#SquareYellow"/>
<use xlink:href="#SquareGreen"/>
<use xlink:href="#SquareRed"/>
</svg>


Clover and Illustrator draws boxes correctly:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve">
     
<symbol id="SquareYellow">
  <rect style="fill:#FFFFFF;stroke:#E2DD24" x="0" y="0" width="128" height="128"/>
</symbol>
<symbol id="SquareGreen">
  <rect style="fill:#FFFFFF;stroke:#41AD51" width="95.4" height="95.4"/>
</symbol>
<symbol id="SquareRed">
  <rect style="fill:#FFFFFF;stroke:#E84325" width="56.3" height="56.3"/>
</symbol>
<use xlink:href="#SquareYellow" width="128" height="128" transform="translate(0,0)"/>
<use xlink:href="#SquareGreen" width="95.4" height="95.4" transform="translate(16.3,16.3)"/>
<use xlink:href="#SquareRed" width="56.3" height="56.3" transform="translate(35.9,35.9)"/>
</svg>


But it gets more complicated with circles. For my BGM_SVG main icon template, I've found I also need to subtract the placement values from the caller from the placement values in the symbol. Which is a pain.

 

See two files:

BGM_Icon_Template_Corrected.svg

BGM_Icon_Template.svg

 

The BGM_Icon_Template_Corrected SVG file now draws correctly in both Clover and Illustrator.

 

Share this post


Link to post
Share on other sites

In this case, illustrator has incorrect behavior. I just tested your first SVG in multiple different applications and it draws three concentric squares inside each other like it should. Illustrator does not. Maybe you might want to open a bug ticket with them, as this is not correct behavior. Attributes should absolutely be copied to the use imported objects, noted by the second SVG still having colors even in illustrator (you could always move the other attributes into the style attribute though) since it's copying the style attribute. The only situation where this is not the case is if you styled them with embedded CSS and were importing from a separate file, it does not import embedded style from the other file. This does not apply if you used an external CSS though. Although you can't currently use an external CSS in clover, or import from external files, so those points are pretty moot.

 

EDIT: The second set of icons is the same bug in illustrator. It appears it's not applying certain attributes to the use imported object, although it should be. https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use

EDIT2: I see why illustrator made this mistake, because it says 

much like cloned template elements in HTML5

template elements only support global attributes. However, the example given right before that clearly shows that all attributes must be copied and it copies some attributes or the elements would not be drawn correctly ever.

EDIT3: This makes it even more evident since they did what you did and expect that it draws correctly. https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol

Edited by apianti

Share this post


Link to post
Share on other sites
18 hours ago, apianti said:

In this case, illustrator has incorrect behavior. I just tested your first SVG in multiple different applications and it draws three concentric squares inside each other like it should. Illustrator does not. Maybe you might want to open a bug ticket with them, as this is not correct behavior.

Yeah. I was surprised when I saw it as I would have thought Illustrator would be the daddy! I am running CC2018 though and have not yet updated to CC2019 so I'll need to check what happens with the most up to date version.

 

18 hours ago, apianti said:

(you could always move the other attributes into the style attribute though) since it's copying the style attribute.

Yeah, thanks for the pointer. I'll need look at that.

 

And thanks for the other notes and links.

 

I'm going to need more time to look more in to individual specifics, but for now I'm posting where I am with the symbol version of BGM_SVG. I've only currently applied it to the OSBadges and Functions. I'll work on it more when I can.

 

BGM_SVG_Symbols.zip

 

Another issue with the way I'm currently using symbols so both Clover and Illustrator show the file correctly is that macOS's quicklook (does it utilise webkit?) doesn't render the file properly. 

 

 

Share this post


Link to post
Share on other sites

Yes, I think quicklook uses webkit as it show same picture as Safari.

For example if you made an svg image with text using embedded SVG font then Safari and quicklook can show it correctly. Not Google Chrome, not IE.

Share this post


Link to post
Share on other sites
2 hours ago, Slice said:

Yes, I think quicklook uses webkit as it show same picture as Safari.

For example if you made an svg image with text using embedded SVG font then Safari and quicklook can show it correctly. Not Google Chrome, not IE.

 

Funny thing about this is that almost every major developer helped to develop webkit, including adobe and google, google still has the most number of commits in webkit but uses a forked version of their own called blink since a certain version of chrome (28? 29?). I think only apple uses the original webkit now. Yeah, embedded fonts work in almost nothing, but if you move them to a separate svg and use the @font-family syntax for css then it works, lol.

Share this post


Link to post
Share on other sites

Oh I already knew it didn't work in chrome.... In fact as far as I can tell it only works in apps that ship with apple products, so new webkit-based apps. I bet older versions do not work though...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By STLVNUB
      Script file to clone and help build Clover, Opencore (official and unofficial) repos
      Script will create link to itself in /usr/local/bin/bob
      Wouldn't hurt to check there are no "Bob"'s there, i "Hope" there isn't.
      Then you only need to type bob. and a parameter
      "n" for NDK repo, unofficial
      "a" for ACID repo, official
      "c" for CLOVER
      It also takes "all" for ALL, if your game
       
      Easier typing bob than.....usual stuff
      Enjoy
       
    • By MaLd0n
      -Donations with PayPal
      https://tinyurl.com/r2bvzm7
       
      -Donations with Bitcoin
      33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3
       
      -Donations with PicPay 
      @danielnmaldonado
       
      ---TUTORIAL---
      https://www.olarila.com/topic/5794-guide-install-macos-with-olarila-image-step-by-step-install-and-post-install-windows-or-mac/
       
      --Original Post--
      https://www.olarila.com/topic/6531-olarila-hackbeast-z390-designare-thunderbolt-full-dsdt-patches-clover-opencore/
       
      --Bios/UEFI Settings--
       
      *Update bios/uefi to F7+*
      1- Go to M.I.T./Advanced Frequency Settings tab
       
      Extreme Memory Profile (X.M.P.) - Profile 1
       
      2- Go to BIOS tab
       
      CSM Support - Disabled
       
      3- Go to Peripherals/Thunderbolt(TM) Configuration tab
       
      Security Level - No Security
      Thunderbolt USB Support - Enabled
      GPIO3 Force Pwr - Enabled
       
      4- Go to Chipset tab
       
      Internal Graphics - Enable
       
      ---CLOVER FOLDER---
      https://olarila.com/files/Clover.Folder/EFI CLOVER Z390 DESIGNARE.zip
      *Use this folder with FULL DSDT PATCHED
       
      ---OPENCORE FOLDER---
      https://www.olarila.com/topic/6364-mojave-catalina-on-mobos-series-100200300-with-opencore-bootloader/
      *Use this folder with FULL DSDT PATCHED
       
       
      ---Extract one Full dump for DSDT edits, post files---
       
      RunMe.app
       
       
       
      ---HARDWARE---
       
      --MOBO

      GIGABYTE Z390 DESIGNARE
      -Link
      https://www.amazon.com/Z390-DESIGNARE-Gigabyte-Thunderbolt-Motherboard/dp/B07K8RJZRG/ref=sr_1_1?keywords=Z390+DESIGNARE&qid=1565492390&s=electronics&sr=1-1

      --PROCESSOR

      Intel Core i9-9900K
      -Link
      https://www.amazon.com/Intel-i9-9900K-Desktop-Processor-Unlocked/dp/B005404P9I/ref=sr_1_1_sspa?keywords=Intel+Core+i9-9900K&qid=1553358099&s=gateway&sr=8-1-spons&psc=1

      --COOLER

      CORSAIR H100i RGB PLATINUM AIO Liquid CPU Cooler
      -Link
      https://www.amazon.com/CORSAIR-H100i-PLATINUM-Liquid-Cooler/dp/B07JWB5BSN/ref=sr_1_4?keywords=WATER+COOLER+CPU&qid=1565492509&s=gateway&sr=8-4

      --MEMORY

      Corsair CMW32GX4M2C3200C16 Vengeance RGB PRO 32GB (2x16GB) DDR4 3200 (PC4-25600)
      -Link
      https://www.amazon.com/Corsair-CMW32GX4M2C3200C16-Vengeance-PC4-25600-Desktop/dp/B07GTG2T7L/ref=sr_1_15?keywords=memory+ddr4+32&qid=1553358238&s=gateway&sr=8-15

      --GPU

      MSI RX Vega 64 AIR Boost 8G OC
      -Link
      https://www.amazon.com/MSI-RX-64-AIR-8G/dp/B07DH7S1X1/ref=sr_1_2?keywords=vega+64+gigabyte&qid=1565492819&s=electronics&sr=1-2

      --SSD

      Samsung 970 EVO 1TB SSD (MZ-V7E1T0BW) NVMe M.2 V-NAND
      -Link
      https://www.amazon.com/Samsung-970-EVO-1TB-MZ-V7E1T0BW/dp/B07BN217QG/ref=sr_1_1?keywords=s+samsung+970+evo+1tb&qid=1565493002&s=electronics&sr=1-1

      --POWER SUPPLY

      EVGA Supernova 1000 P2 80+ Platinum, 1000W ECO Mode Fully Modular 
      -Link
      https://www.amazon.com/EVGA-Supernova-Platinum-Crossfire-220-P2-1000-XR/dp/B00EKJQM5E/ref=sr_1_3?keywords=power+supply+1000w&qid=1565493196&s=gateway&sr=8-3

      --WIRELESS

      TP-Link Archer T9E
      -Link
      https://www.amazon.com/TP-Link-Archer-T9E-Beamforming-Technology/dp/B00TQEX7AQ/ref=sr_1_1?keywords=TP-Link+Archer+T9E&qid=1553358397&s=gateway&sr=8-1

      --CASE

      Thermaltake Core P5 Tempered Glass Black Edition ATX Open Frame Panoramic Viewing
      -Link
      https://www.amazon.com/Thermaltake-Tempered-Panoramic-Certified-CA-1E7-00M1WN-03/dp/B01N4IGVSC/ref=sr_1_2?keywords=Thermaltake+Core+P5&qid=1565493567&s=gateway&sr=8-2

      --DSDT Patches--
      -FIX ACPI ERRORS -FIX OEM SSDTs to AVOID ERRORS AND WARNINGS -REMOVE UNUSED SCOPES / DEVICES -HIGH PRECISION EVENT TIMER -SATA -DMAC -REMOVE PROBLEMATIC AND UNUSED DEVICES -FIX K.P in REBOOT -SLPB -DARWIN / WINDOWS 2015 -XHCI -PLUGIN TYPE -HDAS to HDEF -HDEF -REAL TIME CLOCK -ARTC -IRQs -SBUS -BUS1 -MCHC -ALS0 -SHUTDOWN -LAN -FWHD -USBX -PMCR -PPMC -XSPI -CNVW -GMM -IMEI -EC -PNLF -ARPT -GFX0 -NVME -DTGP -ACQUIRE MUT0 0XFFFF -MUTEX MUT0 0x00 -EXTERNAL REFERENCES -UNKNOWNOBJ -HDMI / HDAU -FULL RENAMED DEVICES ---SCREENSHOTs---




















      -Credits and thanks to the old and new people in the community who developed patches, kexts and bootloaders!
      Thanks to KGP for SSDT Thunderbolt
      Slice, Kabyl, usr-sse2, jadran, Blackosx, dmazar, STLVNUB, pcj, apianti, JrCs, pene, FrodoKenny, skoczy, ycr.ru, Oscar09, xsmile, SoThOr, RehabMan, Download-Fritz, Zenit432, cecekpawon, Intel, Apple, Oracle, Chameleon Team, crazybirdy, Mieze, Mirone, Oldnapalm, netkas, Elconiglio, artut-pt, ErmaC, Pavo, Toleda, Master Chief and family, bcc9, The King, PMheart, Sherlocks, Micky1979, vit9696, vandroiy2013, Voodoo Team, Pike R. Alpha, lvs1974, Austere.J, CVad, Sampath007, onemanosx, erroruser, Jenny David, Olarila Facebook Community, Hackintosh Facebook Community and many others!
      We're all here to have fun and learn from each other!
    • By heiza
      Ryzen 7 2700X
      ASUS Prime X470 Pro
      32GB G.Skill Ripjaws V DDR4-3200
      ASRock Phantom Gaming Vega 56
       
      My motherboard doesn’t have an option for 4G encoding. And boot modes are listed as ”Windows UEFI Mode” and “Other OS”.
       
    • By blackosx
      Clover has many themes, some of which come included with the Clover installer but different themes, sometimes more up to date and better themes, have otherwise been listed in the Clover wiki with a download link to find the files. Not all themes can be included in the Clover installer as their many files make them large in file size and the installer would be unnecessarily bloated.
      Because of this, it's been decided (soon) to move all themes from Clover's source repository and instead host them in a new specific theme repository at sourceforge, next to the Clover repository. This will result in a smaller Clover repository allowing for faster check out of the source and downloading of the Clover installer quicker. Clover with still have it's own very simple embedded theme so users installing without a theme will not be left in the dark.
       
      Clover Theme Manager
       
      ==========================================
      Clover Theme Manager has now been retired
      This is due to the lack of time to maintain and develop any further
      Please see Clover.app instead which includes a theme manager
      ==========================================
       
      4th June 2019 - Now at version 0.77.2 (Recent changelog)

      If updating from a previous version fails then please download the new version from the bottom of this post.

      Please take note. To get themes from the new Clover theme repository you will need to have git installed.
      You can install git either by itself by downloading the installer from http://git-scm.com or you can install the Xcode command line developer tools by loading up Terminal and typing xcode-select --install



      It started out as a simple app which displayed a list of themes in the repository and gave you the option to download and install themes to your /EFI/Clover/Themes directories.

      It's since grown with the aim of becoming more of a manager app by reading the Clover bootlog to determine what happened last boot and offering a set of options to change the theme for next boot depending on your system.

      On launch, the app will attempt to read your boot device and use your boot device. If this device uses an MBR partition then the app will ask for your password so it can run fdisk to match the device. If your boot volume is an EFI system partition and it's currently unmounted then the app will ask for you password to mount it.

      What happens if a theme designer updates their theme?
      The theme manager can check for updates to themes and notify you giving you the option to update your installed version.

      I no longer want to use a theme.
      You can simply remove installed themes by clicking the UnInstall button.

      I have created a theme. How do I add it to the repository?
      Theme designers can have access to add and amend their themes for anyone else to install and try out. Step by step instructions can be found by clicking the 'How to add my theme' foot link in the app.

      What does the Clover Theme Manager app install to my system?
      A support directory is used for cloning the necessary repository files for the app to function. You will find that at:
      ~/Library/Application\ Support/CloverThemeManager All application data gets saved to:
      ~/Library/Preferences/org.black.CloverThemeManager.plist App runtime files, including a log are written to:
      /tmp/CloverThemeManager  
      Where’s the source code for the app?
      http://sourceforge.net/p/cloverefiboot/themes/ci/master/tree/CloverThemeManagerApp/CloverThemeManager/

      Credits:
      The app is based on the objective-c macgap (MIT license) with a couple of modifications by me. The web view presented by macgap is where I effectively run a web app which communicates back and forth with a bash script which is initially launched by macgap when it’s loaded.

      The Clover git repo has been setup by apianti.
      Thanks to apianti, dmazar, JrCs, SoThOr and Micky1979 for their help.
      Thanks to alexq, arsradu, asusfreak, Badruzeus, chris1111, droplets, eMatoS, kyndder, mnfesq, oswaldini & SavageAUS for testing.

      The application has been in development for a few months now and while I think it's pretty stable I can only test on my systems and respond to the feedback of others so there may well be bugs and issues yet to be squashed. If you wish to try out the application then please report any feedback, both positive and negative here.

      Note: If you are reporting any problems then please supply a description of the problem, a screenshot and attach a .zip of the /tmp/CloverThemeManager directory (available only while the app is running).
       
      Can I download themes without using the CloverThemeManager app?
      Yes, you can manually manage your own /EFI/Clover/Themes directories yourself as you may currently do.
      Dmazar suggests the following command in Terminal, replacing XXXXXXXX with the name of the theme. So cd to a directory of your choice and run this...
      git archive --remote=git://git.code.sf.net/p/cloverefiboot/themes HEAD themes/XXXXXXXX | tar -x Download v0.77.2:
      Clover Repo at sourceforge
       
    • By Myfz
      Hi all,

      I recently build my hackintosh, I got Win10 on my 1st disk and MacOS Catalina on the 2nd disk.
       
      Unfortunately my Win10 disk was defective and I will need to change it.
       
      I was thinking to :
       
      - Remove my Win10 disk and replace by my new one
      - Temporarily remove my MacOS Disk (Clover)
      - Reinstall Win10 on my new disk
      - Put back my MacOS Disk

      I believe clover will still start, and I will still be able to boot on the new Win10 disk, what do you think ?

      Thank in advance for your help,
      regards
×