If you hard code the bookmarks how would you handle the id resolution,
as that is done through the area tree. Potentially you could code the
bookmarks in other renderers like AWT.
-Original Message-
From: Glen Mazza [mailto:[EMAIL PROTECTED]
Sent: Monday, 25 October 2004 12:26 PM
To:
.
Also an older file on a newer viewer works as expected with the features
in the file.
So you can use newer features in the fo and output PDF and as long as
the default for the objects is suitable then it should display well on
both.
Keiron
-Original Message-
From: Glen Mazza [mailto:[EMAIL
Hi,
Thanks for the support.
I will go ahead and do whatever I can to help out with this and be part
of the XML graphics PMC.
I have read all the emails about this concept and think that it is a
good idea and should help things develop in useful directions.
Regards,
Keiron Liddle
-Original
://xml.apache.org/fop/resources.html
I agree with Pete here - this AFP renderer is too disjointed and has a
few
limitations which make it too unpractical.
And--amazing what Google searches turn up--Keiron also
created one for FOP apparently:
http://www.aftexsw.com/personal/resume.html
Congrats, have fun should be nice down there.
-Original Message-
From: Peter B. West [mailto:[EMAIL PROTECTED]
Sent: Thursday, 17 June 2004 11:07 PM
To: fop-dev
Subject: Offline
Fopfellows,
I will be offline for the next week. I'm marrying Jenni tomorrow, and
honeymooning in the
Hi,
I was looking at some of the border issues and would like to ask for a
little clarification of which of area rectangle that is described by
Block.getHeight and Block.getWidth.
I think the intention was that it is the allocation width and height, the content is
then calculated from
the different output you are
experiencing as the flow of the text depends on the size of each character in the
font.
Keiron
Hi, everyone.
I recently come across to that the SVG output and PDF
output are slightly off each other.
Take a look at the examples\basic\simple.fo, the
difference
This sounds bad, shouldn't FOP take the charge of font
metric measurement before rendering to different
format?
It does, the font metrics for SVG are the AWT metrics taken from java which are
from the current platform.
Does this mean that for different fonts, SVG output
will alway have the
to these issues
(hopefully!) soon.
Glen
Keiron
Team,
While Victor and Jeremias are discussing an input
API--I'd like to take advantage now of the relative
freeze in the codebase to move the StructureHandler
and LayoutHandler classes from the apps package to the
fo and area packages respectively (similar to what
we're doing with
keiron 2003/04/01 16:40:04
Modified:.status.xml
Log:
updated status re markers
Revision ChangesPath
1.28 +11 -11xml-fop/status.xml
Index: status.xml
===
RCS file: /home/cvs/xml-fop
Thanks Keiron for the feedback!
I found and reviewed the discussion regarding the move to Avalon (ref:
http://marc.theaimsgroup.com/?l=fop-devm=10226606705w=2 ).
I also appreciate your point that some aspects of configuration have
already been 're-enabled'; as exemplified
in what way is it not working for you, is the pattern not visible which may be
due to a wrong transform or is it some other problem.
Keiron.
Keiron,
during testing I found that type 1 patterns didn't work. Was that always
so? I coded a little proggie that built a PDF from scratch by hand
Hi,
My three would be:
30, 13 and 20
Keiron
Hello!
I have added #30 as somehow modified #7 and added one new penguin logo.
Now lets finally finish with this stuff. As Peter suggested lets vote by 3
favorite logos first.
My list:
#30
#2
#21
PS. Here is the list for you
keiron 2003/03/27 15:53:29
Modified:src/java/org/apache/fop/svg PDFGraphics2D.java
Log:
moved image drawing so drawing with size also works
Revision ChangesPath
1.4 +44 -45xml-fop/src/java/org/apache/fop/svg/PDFGraphics2D.java
Index: PDFGraphics2D.java
I was curious and tried your code. Look like the drawImage method in
question isn't implemented in PDFGraphics2D.java.
This is fixed in cvs, just moved some code.
I modified your code and got a image in PDF when I did the following:
while(!PDFGenerator1.drawImage(img, 400, 300,
These changes are in CVS (redesign) now.
I've also introduced a dependency on Jakarta Commons IO, mainly because
of the CountingOutputStream needed for on-the-fly stream output. It also
contains several utility methods (such as for stream copy) that also
exist in out codebase. I'd like to
from there somehow.
Maybe you could use a dummy observer if the image is already loaded.
Keiron.
How can I obtain an java.awt.ImageObserver that
I can pass to one of the drawImage methods of
PDFDocumentGraphics2D?
Example:
pdfgen = new PDFDocumentGraphics2D(true,System.out
I made some decent progress today on getting my head into the trunk code,
and to document some of what I have learned. I am still confused by the
Development and Redesign tabs. At first, I thought that maybe
Development was for those who might be developing on the maintenance
branch, and
With regard to the faq, I just last night sliced out nearly all of the
contents of the dev/faq.xml file. As far as I could tell, it was a duplicate
of an old version of the faq.xml. Those changes are not reflected on the
site yet (I have emailed Jeff to try to find out why not).
It wasn't
object with
all the text information.
The other is to reduce references in the fo tree.
So if possible I would suggest putting the required properties into the TextInfo
class.
Keiron.
There is a change between the maintenance branch the redesign (trunk) that
I do not understand. The constructor
Jeremias Maerki wrote:
Anyway, may I ask for the reason that you want to do that?
Sure. I am trying to port some code I wrote to implement text-transform for
the maintenance branch over to the trunk. One of the key things there is to
tie together all FOText objects that are part of the
That's why I didn't commit the patch: I didn't want to re-add
the PDFDocument reference to PDFXObject in order to get the
add the encryption filter after the makeStream() without asking
why the reference had been dropped on the way from maintenance
to HEAD.
The PDFDocument was used in the
Hi,
I'm new to FOP, just joined the mailing list and I'm not sure what
exactly is going on so I'd *really* appreciate it if someone could
explain how to build FOP from the latest src (if it is even possible).
I've been unable to build FOP from the src archive as of 3/11. A couple
make a
release and then make that available to batik.
We will need to make a cvs tag. It will need to be decided within the next few
days.
Heres my +1
So what do others think.
Keiron.
-
To unsubscribe, e-mail: [EMAIL
The encryption filter uses the number and generation as part of the hash to
generate the key for a given object. In short, the encryption key is
different for every object and is based on the number and generation of the
object. I would have preferred something simpler but the PDFXObject is
I'm in major refactoring mode/mood. :-) So I would like to finally make
the long due move from src/org/.. to src/java/org. We've discussed it
more than once and we didn't come to an end. So I would like to propose
the following:
We remove the files normally using CVS commands and readd them
Keiron, I assume it was you who wrote two of the mails and put the
notifications on the Wiki page? With only the IP address it's difficult
to tell (you can register your name in Preferences. Nudge, nudge). Was
it Togan, you contacted or one of the other two? Not that we write to
the same
Peter, Keiron: how is the web site updated? I thought there was a
cron job every few hours?
Currently it only updates the site here: http://forrestbot.cocoondev.com (seems to
be down at the moment)
From this site you can update the main site by entering the correct
name/password, I'll send
Hi Peter,
For the inline-container all it does is return one or more inline viewport areas.
I think, but need to check, that it only can create more than one viewport if the IPD
of the contents is perpendicular to the parent IPD. This ensures that the areas a
properly ordered. If the IPD is the
Hi All,
I am trying to use batik extensions through
FOP. I added BatikElementMapping and BatikObj objects
into my FOP src and then registered them in the driver
class but I am still getting some exceptions. Can
anybody help me out ? I am trying to embed the
flowText.svg ( provided by
keiron 2003/03/06 22:15:15
Modified:src/documentation sitemap.xmap
Log:
updated to latest forrest sitemap 1.71
Revision ChangesPath
1.11 +795 -531 xml-fop/src/documentation/sitemap.xmap
Index: sitemap.xmap
Hi Jeremias,
You mean Batik will have pdf-transcoder.jar and ps-transcoder.jar in
their distributions? Not the source, right?
That is correct.
What about factoring out the code for the transcoders and supporting
classes (like fonts) into a separate container/subproject accessible by
both
Hi Jens,
Hi!
I've got a fo-task for which I need a working
fo:inline-container-object.
This feature seems not to be implemented in the 0.20.x-version.
I would like to know weather support for this element is planned for the
coming versions (maintenance or redesigned-branch). Are any
transcoder? Could this be included.
Keiron
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]
-page retrieve m1 or m2?
Probably m1, but where in the spec can I find backing for this
opinion?
Look in 4.2.5 Stacking constraints.
In the diagram case 2, A is before B. So that in your example the after edge of
block A is after the after edge of block B, so m1.
Keiron
keiron 2003/03/03 19:48:09
Modified:src/org/apache/fop/layoutmgr AbstractLayoutManager.java
BlockContainerLayoutManager.java
BlockLayoutManager.java
BlockStackingLayoutManager.java BreakPoss.java
keiron 2003/03/03 19:50:54
Modified:src/org/apache/fop/fo/flow BasicLink.java BidiOverride.java
PageNumberCitation.java
Log:
updated for LayoutProcessor
Revision ChangesPath
1.20 +9 -3 xml-fop/src/org/apache/fop/fo/flow/BasicLink.java
keiron 2003/03/03 19:55:54
Modified:src/org/apache/fop/fo Title.java
src/org/apache/fop/fo/flow Leader.java
Log:
fixed for changed method
Revision ChangesPath
1.14 +12 -11xml-fop/src/org/apache/fop/fo/Title.java
Index: Title.java
(compiling an exe) working with a cutdown of the
code. I think that gcj needs some work before it will be really useful.
Keiron.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]
keiron 2003/02/27 15:30:51
Modified:src/org/apache/fop/area PageViewport.java
src/org/apache/fop/layoutmgr AbstractLayoutManager.java
LayoutManager.java BlockLayoutManager.java
BlockContainerLayoutManager.java
anyway, it is mainly a
matter of getting the logic right.
When we know how it definitely should work then we can adjust it if necessary.
Keiron.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL
!-- If I remove this line, everything seems to work
fine --
svg:line x1=58 y1=179 x2=403 y2=179
stroke=#00 stroke-
width=0.5 /
IIRC It is probably an error caused by this line being 0.5 width. In PDF lines can
only be whole numbers and it might wrongly be inserting 0.5 in the PDF
to have different layout implementations.
For now it shoud help make it a bit clearer and I want to have a go at trying the
ideas I have for doing the layout in a slightly different way.
I will call it LayoutProcessor unless there is a better idea.
Any objections?
Keiron
Keiron Liddle wrote:
Hi all,
In order to make things more modular I would like to split the layout manager
interface into two parts. One part that is used in the creation from the FO tree
and
another that is used by the implementations in order to do the actual layout.
See my
But the marker subtree from the previous page is tranposed into the same
containing page.
Where do you get that from, how is it transposed, I have not seen any information
about this?
Considering all the retrieve positions refer to areas in the containing page then
these markers transposed
Looking at it again, I disagree. The containing page is the page
containing the first area generated or returned by the children of the
retrieved fo:marker. That is, the page on which the fo:retrieve-marker
occurs in the static-content. This will only vary if the retrieval
forces a
Keiron,
I haven't looked at markers too closely, but I would tend to think that,
in the first case, block c is the last-starting-within-page. Blocks a,
b and c all qualify; they all have an is-first trait of true. So
which one follows all others in the area tree, *in pre-order
Exactly. All definitions regarding retrieve-position exclusively
refer to the current page. There is not a single word on what should
happen if there is no matching marker on the current page but several
on the previous page which are eligible. FOP picks the last, but there
is absolutely
I haven't looked at markers too closely, but I would tend to think that,
in the first case, block c is the last-starting-within-page. Blocks a,
b and c all qualify; they all have an is-first trait of true. So
which one follows all others in the area tree, *in pre-order traversal
order*?
Hi all,
Is it correct that it should look for markers on the current page and if page
boundary is current page then stop there. If boundary is page-sequence then
keep going backwards on each page until a marker is found or reaches the start
of the page-sequence and similarly for the document
is granted to the
ASF. THe contributor does reserve remaining rights, title and interest.
I don't know if code contributed under this agreement is the same as code
contributed with normal patches etc., maybe it is implied?
Keiron
interface (I haven't tried it) if you
know the password.
Keiron.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]
keiron 2003/02/19 18:47:45
Modified:src/org/apache/fop/area AreaTree.java AreaTreeModel.java
PageViewport.java
src/org/apache/fop/layoutmgr PageLayoutManager.java
RetrieveMarkerLayoutManager.java
is resolved
after resolving markers, for example with tables it shouldn't make any
assumptions about the type of child.
I don't understand the boundaries etc. so I might need some help there.
Keiron.
-
To unsubscribe, e-mail: [EMAIL
keiron 2003/02/18 21:39:20
Modified:src/org/apache/fop/fo/flow InstreamForeignObject.java
Log:
cleaned up some styling
Revision ChangesPath
1.36 +50 -43xml-fop/src/org/apache/fop/fo/flow/InstreamForeignObject.java
Index: InstreamForeignObject.java
keiron 2003/02/18 21:43:25
Modified:src/org/apache/fop/area Page.java PageViewport.java
Log:
place markers on page viewport
Revision ChangesPath
1.9 +1 -6 xml-fop/src/org/apache/fop/area/Page.java
Index: Page.java
keiron 2003/02/18 21:49:29
Modified:src/org/apache/fop/layoutmgr AbstractLayoutManager.java
BlockContainerLayoutManager.java
BlockLayoutManager.java
BlockStackingLayoutManager.java
keiron 2003/02/18 21:54:15
Modified:src/org/apache/fop/fo/flow RetrieveMarker.java
Log:
add retrieve marker layout manager
Revision ChangesPath
1.12 +31 -10xml-fop/src/org/apache/fop/fo/flow/RetrieveMarker.java
Index: RetrieveMarker.java
keiron 2003/02/18 21:55:25
Modified:src/org/apache/fop/pdf FlateFilter.java PDFColor.java
Log:
fixed some minor errors
Revision ChangesPath
1.6 +7 -7 xml-fop/src/org/apache/fop/pdf/FlateFilter.java
Index: FlateFilter.java
Hi all,
and especially Keiron.
What are currently the most pressing problems with HEAD, in
order to make a dev-release?
I looked around and found quite a few details, but I can't
seem to get the big picture. I have somethig to do for the API
spec but there wasn't much activity in this area
I'd say we can't keep something like that within our codebase because it
contradicts the Apache licence. It is entirely possible that someone
sells a product that uses FOP. That wouldn't violate the Apache licence
but the licence of this hyphenation file. Recent discussions on various
Apache
keiron 2003/02/13 20:15:09
Modified:src/org/apache/fop/fo FOText.java FObjMixed.java Title.java
src/org/apache/fop/fo/flow BasicLink.java BidiOverride.java
Block.java BlockContainer.java Character.java
ExternalGraphic.java
This sounds great, but I have one question. We've posted a bug report
(http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16672) about the SVG
rendering in 0.20.4 and 0.20.5. Our SVG's in the rendered PDF
document(s) gets clipped. We're now using 0.20.1 and everything is fine
there. The
keiron 2003/02/12 20:24:19
Modified:src/org/apache/fop/fo/flow Leader.java
src/org/apache/fop/layoutmgr
BlockContainerLayoutManager.java
BlockLayoutManager.java
BlockStackingLayoutManager.java
basic of
these, as long as the mechanism is general enough to allow for refinement.
I am hoping that making the breaks simple and easy to find certain properties from
any position will help us to explore what to do next.
Keiron
On Wednesday, January 29, 2003, at 03:20 PM, Rhett Aultman wrote:
This might be semantic nitpicking more than anything, but how can
finding a worse break prove you have the best break? Wouldn't you have
to find all possible breaks and verify that they're worse? Also,
just for personal
On Wednesday, January 29, 2003, at 09:54 PM, J.Pietschmann wrote:
Keiron Liddle wrote:
The only drawback is that it constantly needs to find the child layout
manager that applies to a given break...
Well, if there is a min opt max, and opt doesn't quite fit,
you have to choose whether
The asap rendering is mostly done, we still need to bring back many of
the renderers.
I suppose you mean the PDFRenderer is mostly done.
Yes.
I should probably expand on that topic a bit.
The layout creates an area tree which consists of pages. As each page is
created by the layout the
keiron 2003/01/23 10:59:08
Modified:src/org/apache/fop/area AreaTreeModel.java BodyRegion.java
CTM.java CachedRenderPagesModel.java MinOptMax.java
RegionViewport.java RenderPagesModel.java Span.java
On Thursday, January 23, 2003, at 06:37 PM, LENEVANEN Cedrick wrote:
Confronted to volumetric problems I am very interested in the re-design
branch of the FOP project, in particular the FO SAX input and ASAP
rendering tasks. I wonder if I could try helping in order to make
possible
getting a
for the PS renderer you will need to register a TextPainter in the
same way which should do the same sort of thing as for the PDFRenderer.
Keiron.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL
Jeremias Maerki wrote:
Common guys! I'd like to have some participation on this matter from all
the committers since this an important thing.
Sorry a bit sidetracked.
Personally I would like to see some sort of rotation (assuming that there will
always be 1 or 2). For example every 6 months.
Batik is only necessary to generate SVG output, right? I guess, a lot of
people are using Fop to generate PDF only, but Fop needs batik.jar in any
case because the driver initializes an SVG element mapping:
org.apache.fop.apps.Driver.setupDefaultMappings() :
from batik.jar. batik.jar
was compiled by us manually and Keiron (for trunk) and I (for branch)
both
haven't realized that the SAX classes slipped in, I guess. I'll check
the way we generate that jar again tomorrow. It might simply be a matter
of sending the Batik team a little patch
Did you know that the Cocoon guys have jimi.jar in their CVS? I wonder
if that's correct and if yes, I think we should do it, too.
From my reading of it, by downloading the jar you automatically agree to the
license. This is quite different to ASL.
It is also non-transferable, I think that
Isn't the jai.jar (which would give fop great functionality!) not
redistributet for the same reason?
Yes.
I think the javax.imageio package is where Jimi and Jai were leading. So once
jdk1.4 can be used...
Best Regards
Markus Schäffler
keiron 2003/01/15 11:30:24
Modified:.build.xml
Log:
include font classes for pdf transcoder
Revision ChangesPath
1.73 +1 -0 xml-fop/build.xml
Index: build.xml
===
RCS file: /home
keiron 2003/01/14 11:55:20
Modified:src/org/apache/fop/pdf PDFRoot.java PDFOutline.java
Log:
setting for page mode, fixed some errors
Revision ChangesPath
1.13 +45 -9 xml-fop/src/org/apache/fop/pdf/PDFRoot.java
Index: PDFRoot.java
Jeremias,
Thanks for the reply. Outside of clean up, I have working code. It is
limited since only PDF 1.3 is supported by FOP and I am currently using a
The redesign code generates PDF 1.4 (which currently is used in a completely
backwards/forwards compatible way).
How does the
properly discuss things like Session, Document, Rendering run, FOP
instances etc. Where to cache what? What objects/services hold/provide
In my mind Document and Rendering run (as defined in the glossary) are
probably the same thing (??). I added something called Rendering instance to
Hello!
How are we going to process underline/overline etc stuff?
It's a little bit confusing - we've got unused TextState class along with
TextInfo that includes text-decoration info already. Lets get rid of TextState ?
And what about rendering, does pdf support text-decoration directly or
On Thu, 2003-01-02 at 12:15, Oleg Tkachenko wrote:
Hello!
I'm stuck in understanding the coordinate system trying to sort out writing
mode stuff, e.g. in this snippet from SimplePageMaster.java:
/* Create the page reference area rectangle in first quadrant coordinates
* (ie, 0,0
keiron 2003/01/02 05:01:12
Modified:src/documentation skinconf.xml
Log:
images don't seem to exist
Revision ChangesPath
1.3 +2 -2 xml-fop/src/documentation/skinconf.xml
Index: skinconf.xml
keiron 2002/12/27 01:39:31
Modified:src/documentation/content/xdocs/dev/fo embedding.fo
Log:
proper widths
Revision ChangesPath
1.3 +2 -2 xml-fop/src/documentation/content/xdocs/dev/fo/embedding.fo
Index: embedding.fo
keiron 2002/12/27 02:04:11
Modified:src/documentation sitemap.xmap
Log:
updated to current forrest
Revision ChangesPath
1.10 +86 -52xml-fop/src/documentation/sitemap.xmap
Index: sitemap.xmap
keiron 2002/12/27 05:48:40
Modified:src/documentation/content/xdocs examples.xml
Added: src/documentation/content/xdocs/fo fonts.fo
Log:
added easy lookup font characters pdf
Revision ChangesPath
1.1 xml-fop/src/documentation/content/xdocs/fo
keiron 2002/12/27 06:00:44
Modified:src/org/apache/fop/layoutmgr/table Row.java
Log:
properly check if row finished
Revision ChangesPath
1.9 +11 -2 xml-fop/src/org/apache/fop/layoutmgr/table/Row.java
Index: Row.java
with an
interest in this topic...please pile the material in there.
Also, Keiron, do you think that maybe we might be able to gather together your
current pontifications regarding layout? I think it's a very relevant page to put up
in the Wiki. I'm happy to write the page if you can help me find
On Sun, 2002-12-22 at 02:18, Kevin O'Neill wrote:
It would be possible to do some work with Fop so that it can:
- convert xsl:fo to paged xml
Is the paged XML a new or existing format?
A new format for now at least.
It is possible there will be a w3c defined format.
keiron 2002/12/23 02:46:10
Modified:src/documentation/content/xdocs/design extending.xml
Log:
better formatting for example
Revision ChangesPath
1.5 +9 -8 xml-fop/src/documentation/content/xdocs/design/extending.xml
Index: extending.xml
keiron 2002/12/23 02:54:52
Modified:src/org/apache/fop/layoutmgr/table TableLayoutManager.java
Body.java
Log:
ignore tables without columns for now
Revision ChangesPath
1.8 +3 -1
xml-fop/src/org/apache/fop/layoutmgr/table
On Thu, 2002-12-19 at 21:15, Jeremias Maerki wrote:
All cool, but how exactly is that better than having a PDF template that
is stitched behind or in front of the FOP result using iText or PJ?
Works well. Ok, PDF reading with our own library is a bonus as is better
XML output for debugging.
On Thu, 2002-12-19 at 16:30, Arved Sandstrom wrote:
I'd like to wish everyone here happy holidays, whatever is appropriate.
This is a good crowd.
+1 :-)
Regards,
Arved Sandstrom
-
To unsubscribe, e-mail: [EMAIL
keiron 2002/12/19 00:12:04
Modified:src/org/apache/fop/fo PropertyList.java
Log:
compare to correct string
Revision ChangesPath
1.19 +2 -2 xml-fop/src/org/apache/fop/fo/PropertyList.java
Index: PropertyList.java
keiron 2002/12/19 00:13:18
Modified:src/org/apache/fop/image ImageFactory.java
Log:
add method to remove context
Revision ChangesPath
1.12 +10 -1 xml-fop/src/org/apache/fop/image/ImageFactory.java
Index: ImageFactory.java
keiron 2002/12/18 06:50:35
Modified:src/org/apache/fop/render/pdf PDFRenderer.java
Log:
clear data when stopping renderer
Revision ChangesPath
1.133 +13 -3 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java
Index: PDFRenderer.java
On Thu, 2002-12-19 at 00:56, Oleg Tkachenko wrote:
Hello!
Just curious, why AreaTreeModel is defined as static inner class of
AreaTree class? It doesn't look like real inner class as it's abstract
and has 3 implementations. Are there any objections against moving it out?
Mainly it is
On Wed, 2002-12-18 at 15:23, Nicola Ken Barozzi wrote:
I don't get this. How can PDFs be transformed?
There are Java libraries that read PDFs. What would be really cool is to
have a reader or something like it that uses a PDF as a template.
Using FOP for just filling out forms is
keiron 2002/12/17 00:32:12
Modified:src/org/apache/fop/fo FOTreeBuilder.java
Log:
nullify fo tree to release data
Revision ChangesPath
1.42 +5 -3 xml-fop/src/org/apache/fop/fo/FOTreeBuilder.java
Index: FOTreeBuilder.java
1 - 100 of 929 matches
Mail list logo