Render SVG To Display And Update Periodically
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Oct 21 23:18:13 PDT 2016
On Saturday, 22 October 2016 at 03:59:16 UTC, Jason C. Wells
wrote:
> First, thank you for taking the time to help me with something
> that should be trivial.
>
> I've done the above listing of file on the command line but I'm
> still stuck. I'm starting to think that I might actually be
> tripping over bugs, but I'm not confident enough to believe
> that without some confirmation.
I think I can confidently assure you that you aren't running into
any bugs here.
>
> I have the following directory structure from the zipfiles
> found in the repositories posted by ketmar.
>
> nanovg_demo
> - iv (was renamed from nanovg based on dmd error messages)
> -- arsd (was renamed from arsd-master based on dmd error
> messages)
>
> To proceed, I would attempt a compile. Then I would add the
> file that was producing an error to the command line and try
> again. I got this far.
>
> Via cmd.exe:
>
> nanovg_demo>dmd example.d iv\arsd\color.d
> iv\arsd\simpledisplay.d iv\perf.d
>
> iv\perf.d(41): Error: module iv.nanovg.nanovg from file
> iv\nanovg.d must be
> imported with 'import iv.nanovg.nanovg;'
>
> demo.d(6): Error: module iv.nanovg.nanovg from file
> iv\nanovg.d must be
> imported with 'import iv.nanovg.nanovg;'
>
> iv/nanovg/nanovg does not exist in the source code zip files.
> (I was reluctant to duplicate nanonvg into iv\nanovg because
> somewhere I learned that copy-pasting code is a bad idea.)
looking at kemar's repository, the nanovg.d module belongs to the
iv.nanovg package. I don't know what the zip directory tree looks
like, but you should have this:
- iv
-- nanovg
--- fui
--- nanovg.d
--- oui
--- package.d
--- perf.d
--- svg.d
As for the asrd stuff, it shouldn't bee in the iv tree at all.
You should do something like this:
- import
-- iv
-- arsd
Both iv and arsd are top-level packages, so they ought to be
independent of each other.
>
> demo.d(7): Error: module oui is in file 'iv\nanovg\oui.d'
> which cannot be read
>
> oui.d does not exist anywhere. There is, however, a oui
> directory.
If you look at the source for demo.d, you'll see that it makes
use of the oui package. That means the everything there also
needs to be compiled and linked into the binary, but you haven't
given those files to the compiler.
>
> As a side note, I did have some success. I am able to compile
> nanovg.lib quite easily (from tips provided a few messages
> ago). It's when I try to compile the demo that I get stuck.
Which files did you add into nanovg.lib? Everything in the
iv.nanovg packages and subpackages, or just the ones you use
directly? It's best to compile all of them into the lib, then any
that are used indirectly by each other are also available.
You've dived right into a multi-module projects without a full
understanding of imports and linking. I suggest you back up a bit
and get familiar with the process before tackling ketmar and
Adam's stuff. If they used dub, it would be a very easy process.
Since they don't, and you have to manage it all manually, you
need a solid understanding of how DMD handles this stuff and why
you are getting the error messages you see.
Try playing around with simple single-function modules, starting
with something like this:
io.d:
```
void print(string s)
{
import std.stdio : writeln;
writeln(s);
}
```
main.d:
```
import io;
void main() { print("Hello, D!"); }
```
Compile both:
dmd main.d io.d
Compile separately:
dmd -c io.d
dmd main.d io.obj
Move the io.d module into a package, mylib.io:
- main.d
-- mylib
--- io.d
Add a module statement to the top of io.d:
```
module mylib.io;
```
Change the import in main.d:
```
import mylib.io;
```
Try again compiling together, then separately. Then move the
mylib directory:
- main.d
-- lib
--- mylib
---- io.d
Then compile together and separately again. Try with and without
-Ilib in both cases and see what happens. Add another
single-function module into the mix. Compile mylib as a library
and try again.
Just keep experimenting like this until you've worked out exactly
what's going on and what the error messages mean. Then you can
tackle the naonvg and arsd.
More information about the Digitalmars-d-learn
mailing list