Jump to content
About Just Joined group Read more... ×

455 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

  • Recently Browsing   0 members

    No registered users viewing this page.

Announcements

  • Similar Content

    • By MaLd0n
      -OpenCore Vanilla TUTORIAL-
       
       
      -USB Port Mapping TUTORIAL-
       
        1 -Create a USB bootable
       
      Create your usb installer, use this tool and download Catalina or Big Sur from Apple servers
       
      Catalina
      installScript_allfullapp.zip
       
      Big Sur
      installScript_1016fullapp.zip
       
      Credits: crazybirdy
       
      Copy Catalina / Big Sur installer to Applications folder, open terminal and run
       
      Catalina
       
       
      Big Sur
       
       
      If you want check one step by step, check here
       
      -Opencore Vanilla Tutorial
      https://tinyurl.com/ycvcnp8h
       
      2- EFI folder USB installation
       
      -EFI OpenCore Folder Desktop 10th Intel Processors
      Paste this EFI folder in EFI partition in your USB STICK
      https://tinyurl.com/ybwr9kq3
       
      -EFI Clover Folder Desktop 10th Intel Processors
      Paste this EFI folder in EFI partition in your USB STICK
      https://tinyurl.com/y6avuxsv
       
       
      3- EFI folder SSD
       
      -EFI OpenCore Folder Desktop 10th Intel Processors
      Paste this EFI folder in EFI partition SSD 
      https://tinyurl.com/ybwr9kq3
       
      -EFI Clover Folder Desktop 10th Intel Processors
      Paste this EFI folder in EFI partition SSD
      https://tinyurl.com/y6avuxsv
       
      4- Start Fine Tune
       
      Run this app and post full dump here for full ACPI solution
       
      RunMe.app
      https://tinyurl.com/y9562hz7
       
       
      If you like a SSDT way, here we go
      SSDT-OLARILA.aml.zip
       
      5- USB Solution
      USB INTEL SERIE 400.zip
       
      Use these kexts, enable XHCI port limit patch and follow this tutorial for remap USB ports
       
       
       
      --DSDT PATCHES--
       
      -FIX ERRORS AND WARNINGS -FIX ACPI ERRORS -REMOVE UNUSED SCOPES / DEVICES -HIGH PRECISION EVENT TIMER -SATA SERIE ID -DMAC -REMOVE LINES, PROBLEMATIC and UNUSED -FIX K.P in REBOOT -NVRAM -REAL TIME CLOCK -SLPB -DARWIN / WINDOWS -XHCI -PLUGIN TYPE -HDEF -ARTC -IPIC -TIMR -SBUS -BUS1 -MCHC -ALS0 -SHUTDOWN -UAR1 -LAN -FWHD -USBX -PMCR -PPMC -XSPI -kUSBCompanionIndex -io-device-location -IMEI -EC -PNLF -ARPT -GFX0 -NVME -ACPI-WAKE-GPE -DTGP -HDMI / HDAU  
      --SCREENSHOTS--































      -If you want to buy me a beer - Donations with PayPal
      https://tinyurl.com/r2bvzm7
       
      Big Thanks to XLR and your Badass Motherboard, Ultrafast CPU, Coolest Heatsink, Huge Graphics Card, Tonnes of RAM,
      Gigantic Hard Drive, Lightspeed Disk Burner, Professional Sound Card, Massive LCD Display.
       
       
      -Credits and thanks to the old and new people in the community who developed patches, kexts and bootloaders!
      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 and many, many, many others!

      We're all here to have fun and learn from each other!
    • By y010204025
      Update: On October 24, 2020, using clover to solve the macOS11 beta10 boot problem, you can now enjoy macOS11beta10, and the compatibility of subsequent versions is not guaranteed.
      HIDPI uses a modified version. You can directly execute the hidpi script to get a better experience. If you lose the repair, it is not within the scope of my support.
      Support upgrades without destroying the integrity of the original image.
      There seems to be a problem with the shortcut keys. If you can help solve it, thank you for your contribution.
       
      Perhaps it was the first NEC (Lenovo) Lavie Z HZ550 to install hackintosh. I hope more people who like Lavie Z series can experience Hackintosh at HZ550. She is really great.
       
      I found HZ550 & HZ750 on the Chinese website, which is amazing. It weighs only 790g, 13.3 inches, and the standard 2k screen, which is too attractive to me. I am a Hackintosh enthusiast. I think HZ550 or HZ750 with MacOS is the best Unfortunately, the Lavie Z series is not listed in China, only exists in the Japanese and American markets, and in the Japanese market is the NEC brand, while the American market uses the Lenovo logo.
       
      Fortunately, I got an HZ550 from Taobao. Yes, not HZ750. In comparison, HZ750 has more touch screens and 360 ° flip. These are hard to attract me. More importantly, HZ750 is about 200g heavier than HZ550 That's why I chose HZ550. Well, because he is only 2,000 RMB.
       
      The specific introduction can refer to NEC Japan official website:http://nec-lavie.jp/products/hz13b/
       
      The HZ550 hardware list I obtained:
                                    
                       -/+:.          ningnan@ningnandeMacBook-Air
                      :++++.          OS: 64bit Mac OS X 10.15.5 19F96
                     /+++/.           Kernel: x86_64 Darwin 19.5.0
             .:-::- .+/:-``.::-       Uptime: 19m
          .:/++++++/::::/++++++/:`    Packages: 1
        .:///////////////////////:`   Shell: zsh 5.7.1
        ////////////////////////`     Resolution: 3840x2160
       -+++++++++++++++++++++++`      DE: Aqua
       /++++++++++++++++++++++/       WM: Quartz Compositor
       /sssssssssssssssssssssss.      WM Theme: Blue (Dark)
       :ssssssssssssssssssssssss-     Disk: 11G / 108G (12%)
        osssssssssssssssssssssssso/`  CPU: Intel Core i7-5500U @ 2.40GHz
        `syyyyyyyyyyyyyyyyyyyyyyyy+`  GPU: Intel Iris Graphics 6100
         `ossssssssssssssssssssss/    RAM: 4376MiB / 8192MiB
           :ooooooooooooooooooo+.    
            `:+oo+/:-..-:/+o+/-     
       
       
      Advantages: small size, light weight, 2K screen, 8G memory, 512g SSD, keyboard feels good, and wireless network card can be replaced, which is unimaginable in today's thin and light books.
      Disadvantages: The sound is small, almost the same as the mosquitoes.
       
      Ok, bragging is over!
      In order to use the wireless network, I changed the wireless network card from inter 7265 to BCM94352ZAE. Some people called it DW1560. It is uncomfortable that in China, this card and his elder brother DW1830 were hyped to a high price of 480RMB. of. Fortunately, I bought it early, and this card is also very stable under win10, and there is no high delay and outage. The hard disk should be PM951 of Samsung, not PM981, which is lucky.   Before installing Hackintosh: You need to prepare a 16G U disk, SanDisk is not a rough choice for making MacOS installation disk, I used the latest MacOS Catalina 10.15.5, got config.plist from Rehabman, and put together an EFI, the latest version of clover and kext drivers. Thanks to Rehabman and the developers of the Black Apple community. I do n’t like that OC team very much.
      Make an installation disk: If you have a computer running MacOS, you can use the command line to make it, if you do n’t have a computer running MacOS, you can try VMware, I know that the insanelymac forum allows discussion, or use ether to write the image to U disk, use the EFI I provided to boot into the installation process.   BIOS setting: Press F12 at boot to enter the BIOS settings, Tab switches to "Security-Secure boot", set to "DISable", this is what we need, and switch to "Boot -Boot devices", set the U disk as the first boot item You can directly enter the clover guide interface, please follow it for google it.
      It is worth noting that the remaining space of your EFI partition needs to be greater than 200M, otherwise, the disk format will be wrong. In addition, the format partition format is APFS, do not choose to encrypt, your data is not valuable, at least you must have this awareness of Hackintosh, the file safe is also the same, do not enable, do not use to find your mac, otherwise, change the machine, OK .   Fortunately, no additional ssdt patch is required. All the patch functions are implemented through clover. The flat Apple is turned on. This is to solve the problem of the flower screen. You can find a solution yourself.
      Experience your black apple, this will bring a better experience than MacBook Pro.  
       
    • By BALDY_MAN
      Hi All.
      Im Happy to share my new EFI file that I put together  18/10/2020. which got me up and running 11.0  Beta(20A5395g) on my hack
      a thanks you to everyone who's work I have use to assemble this EFI File. and the help I have received from this site
      I have used openCore 0.6.3, sound work for me (HDMI) and onboard Ethernet. map the usb ports as you wish.
      the definition to iMac20,2
      hope it helps all who need it
      PS. Please leave a comment if the EFI File is helpful to you
      (No Kexts were Harmed in the making of this EFI)
      THIS EFI. WAS MADE ON A Z490 GIGABYTE MASTER For the Z490 Gigabyte Master ONLY
                                                                                                                     regards
                                                                                                                                         Baldy_man
      GigabyteZ40Master.EFI.(20A539g) .zip
    • By qmgoqwe
      I have installed MacOS and Windows on the following hardware:
       
      AMD Ryzen 7 3700X MSI B450M Mortar Max Sapphire Radeon Pulse RX 5600 XT 6G Samsung 860 QVO, 1 TB SSD (PciRoot(0x0)/Pci(0x1,0x3)/Pci(0x0,0x1)/Sata(0x5,0xFFFF,0x0)) - MacOS on this disk Kingston A2000 SSD 1TB M.2 2280 NVMe (PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/NVMe(0x1,15-AD-CD-26-28-B7-26-00)) - Windows on this disk  
      OpenCore 0.6.1 MacOS 10.15.7 both disks GPT UEFI  
      Both OSs boot nicely and work as a charm when selecting either of the disks as boot disks in the BIOS.
       
      However, trying to boot Windows 10 from the Opencore Bootmanager (no matter whether PickerMode=internal or OpenCanopy) causes a Windows Blue Screen ("SYSTEM THREAD EXCEPTION NOT HANDLED").
      To be on the safe side, I have added an appropriate entry to Misc->Entries:
      <key>Arguments</key> <string></string> <key>Auxiliary</key> <false/> <key>Comment</key> <string>Not signed for security reasons</string> <key>Enabled</key> <true/> <key>Name</key> <string>Windows 10</string> <key>Path</key> <string>PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/NVMe(0x1,15-AD-CD-26-28-B7-26-00)/HD(1,GPT,2E9695CB-0F9A-4005-AADB-2FF9C96AD02C,0x800,0x32000)/\EFI\Microsoft\Boot\bootmgfw.efi</string> It points to the Windows 10 bootmanager on the Windows disk's EFI partition.
       
      What's wrong with that? Why does this cause a BSOD? It is not clear to me why it works when booting from BIOS but not here.
       
      config.plist attached (but maybe it has no relevance for the problem).
      config.plist
    • By le332313
      Can someone share the dell 5593/5493 EFI ? I try to fit the graphics driver, but it not working please help me thanks
       
×