Standard Library

This page explains the official Standard Library for PlantUML This Standard Library is now included in official releases of PlantUML. Including files follows the C convention for "C standard library" (see https://en.wikipedia.org/wiki/C_standard_library )

Contents of the library come from third party contributors. We thank them for their usefull contribution!

AWS library

https://github.com/milo-minderbinder/AWS-PlantUML

The AWS library consists of Amazon AWS icons, it provides icons of two different sizes.

Use it by including the file that contains the sprite, eg: !include <aws/Storage/AmazonS3/AmazonS3>. When imported, you can use the sprite as normally you would, using <$sprite_name>.

You may also include the common.puml file, eg: !include <aws/common>, which contains helper macros defined. With the common.puml imported, you can use the NAME_OF_SPRITE(parameters...) macro.

Example of usage:

@startuml
!include <aws/common>
!include <aws/Storage/AmazonS3/AmazonS3>
!include <aws/Storage/AmazonS3/bucket/bucket>

AMAZONS3(s3_internal)
AMAZONS3(s3_partner,"Vendor's S3")
s3_internal <- s3_partner
@enduml

Cloud Insight

https://github.com/rabelenda/cicon-plantuml-sprites

This repository contains PlantUML sprites generated from Cloudinsight icons, which can easily be used in PlantUML diagrams for nice visual representation of popular technologies.

@startuml
!include <cloudinsight/tomcat>
!include <cloudinsight/kafka>
!include <cloudinsight/java>
!include <cloudinsight/cassandra>

title Cloudinsight sprites example

skinparam monochrome true

rectangle "<$tomcat>\nwebapp" as webapp
queue "<$kafka>" as kafka
rectangle "<$java>\ndaemon" as daemon
database "<$cassandra>" as cassandra

webapp -> kafka
kafka -> daemon
daemon --> cassandra 
@enduml

Devicons and Font Awesome library

https://github.com/tupadr3/plantuml-icon-font-sprites

These two library consists respectively of Devicons and Font Awesome libraries of icons.

Use it by including the file that contains the sprite, eg: !include <font-awesome/align_center>. When imported, you can use the sprite as normally you would, using <$sprite_name>.

You may also include the common.puml file, eg: !include <font-awesome/common>, which contains helper macros defined. With the common.puml imported, you can use the NAME_OF_SPRITE(parameters...) macro.

Example of usage:

@startuml
!include <font-awesome/common.puml>
!include <font-awesome/server.puml>
!include <font-awesome/database.puml>

title Styling example

FA_SERVER(web1,web1) #Green
FA_SERVER(web2,web2) #Yellow
FA_SERVER(web3,web3) #Blue
FA_SERVER(web4,web4) #YellowGreen

FA_DATABASE(db1,LIVE,database,white) #RoyalBlue
FA_DATABASE(db2,SPARE,database) #Red

db1 <--> db2

web1 <--> db1
web2 <--> db1
web3 <--> db1
web4 <--> db1
@enduml

@startuml
!include <devicons/common.puml>
!include <devicons/mysql.puml>

DEV_MYSQL(db1)
DEV_MYSQL(db2,label of db2)
DEV_MYSQL(db3,label of db3,database)
DEV_MYSQL(db4,label of db4,database,red) #DeepSkyBlue
@enduml

Google Material Icons

https://github.com/Templarian/MaterialDesign

This library consists of a free Material style icons from Google and other artists.

Use it by including the file that contains the sprite, eg: !include <material/ma_folder_move>. When imported, you can use the sprite as normally you would, using <$ma_sprite_name>. Notice that this library requires an ma_ preffix on sprites names, this is to avoid clash of names if multiple sprites have the same name on different libraries.

You may also include the common.puml file, eg: !include <material/common>, which contains helper macros defined. With the common.puml imported, you can use the MA_NAME_OF_SPRITE(parameters...) macro, note again the use of the prefix MA_.

Example of usage:

@startuml
!include <material/common>
' To import the sprite file you DON'T need to place a prefix!
!include <material/folder_move>

MA_FOLDER_MOVE(Red, 1, dir, rectangle, "A label")
@enduml

Notes

When mixing sprites macros with other elements you may get a syntax error if, for example, trying to add a rectangle along with classes. In those cases, add { and } after the macro to create the empty rectangle.

Example of usage:

@startuml
!include <material/common>
' To import the sprite file you DON'T need to place a prefix!
!include <material/folder_move>

MA_FOLDER_MOVE(Red, 1, dir, rectangle, "A label") {
}

class foo {
	bar
}
@enduml

Office

https://github.com/Roemer/plantuml-office

There are sprites (*.puml) and colored png icons available. Be aware that the sprites are all only monchrome even if they have a color in their name (due to automatically generating the files). You can either color the sprites with the macro (see examples below) or directly use the fully colored pngs. See the following examples on how to use the sprites, the pngs and the macros.

Example of usage:

@startuml
!include <font-awesome/common>

!include <office/Servers/database_server>
!include <office/Servers/application_server>
!include <office/Concepts/firewall_orange>
!include <office/Clouds/cloud_disaster_red>

title Office Icons Example

package "Sprites" {
	OFF_DATABASE_SERVER(db,DB)
	OFF_APPLICATION_SERVER(app,App-Server)
	OFF_FIREWALL_ORANGE(fw,Firewall)
	OFF_CLOUD_DISASTER_RED(cloud,Cloud)
	db <-> app
	app <--> fw
	fw <.left.> cloud
}

@enduml

@startuml
!include <font-awesome/common>

!include <office/servers/database_server>
!include <office/servers/application_server>
!include <office/Concepts/firewall_orange>
!include <office/Clouds/cloud_disaster_red>

' Used to center the label under the images
skinparam defaultTextAlignment center

title Extended Office Icons Example

package "Use sprite directly" {
	[Some <$cloud_disaster_red> object]
}

package "Different makro usages" {
	OFF_CLOUD_DISASTER_RED(cloud1)
	OFF_CLOUD_DISASTER_RED(cloud2,Default with text)
	OFF_CLOUD_DISASTER_RED(cloud3,Other shape,Folder)
	OFF_CLOUD_DISASTER_RED(cloud4,Even another shape,Database)
	OFF_CLOUD_DISASTER_RED(cloud5,Colored,Rectangle, red)
	OFF_CLOUD_DISASTER_RED(cloud6,Colored background) #red
}
@enduml

Miscellaneous

You can list standard library folder using the special diagram:

@startuml
stdlib
@enduml

It is also possible to use the command line java -jar plantuml.jar -stdlib to display the same list.

Finally, you can extract the full standard library sources using java -jar plantuml.jar -extractstdlib. All files will be extracted in the folder stdlib.

Sources used to build official PlantUML releases are hosted here https://github.com/plantuml/plantuml-stdlib. You can create Pull Request to update or add some library if you find it relevant.


You can contribute on this page by clicking here
EnglishLocal