---
title: 'Developer Docs'
url: 'https://www.twelvetone.tv/docs/arts-and-education/quickchords/developer-docs'
markdown: 'https://www.twelvetone.tv/docs/arts-and-education/quickchords/developer-docs.md'
date: '2026-09-25'
description: 'Developer documentation and API.'
taxonomy:
  category:
    - docs
---

[](#)  [ Home ](https://www.twelvetone.tv/docs/)     [ Arts And Education ](https://www.twelvetone.tv/docs/arts-and-education)     [ QuickChords ](https://www.twelvetone.tv/docs/arts-and-education/quickchords)      Developer Docs    

Developer documentation and API.

#### Table of Contents

- [Goodies](#goodies)
    - [Target](#target)
    - [Contributions](#contributions)
    - [UI](#ui)
- [Language Support](#language-support)
- [Plugging Into The Rendering Process](#plugging-into-the-renderi)
    - [Plugging into the renderer](#plugging-into-the-rendere)
    - [Rendering Phases](#rendering-phases)
- [Document Structure](#document-structure)
    - [Bar Anatomy](#bar-anatomy)
- [I-Doc](#i-doc)
    - [Major Internal Features](#major-internal-features)
- [P-Doc](#p-doc)

[Stairway To Heaven Intro.pdf](https://www.twelvetone.tv/docs/arts-and-education/quickchords/developer-docs/Stairway%20To%20Heaven%20Intro.pdf)

# Goodies

Goodies are plugins that provide features for viewing, rendering, manipulating, and analyzing documents.

## Target

A goody targets a document's type and flavor. This is indicated by implementing the `isApplicable(docType:String, flavor:String):Boolean` method.

## Contributions

A goody advertises the types of contribution it makes.

- Rendering
- Editing
- Viewing
- Exporting
- Importing
- Filtering

## UI

A goody provides additional details for displaying in the UI.

- Label
- Icon
- Category
- Order

# Language Support

# Plugging Into The Rendering Process

## Plugging into the renderer

Implement *RenderPlugin* and register it with the *ServiceManager*.

The rendering process has several *phases* that a plugin can tap into. Each phase has a pre, in, and post entry point; This allows the plugins to interact at a relevant stage.

This example uses the *Component* annotation to register with the service manager.

```java
@Component
public class ChordDiagramPlugin implements RenderPlugin {
    @Override
    public void prePhase(RenderContext renderContext) {
        Logger.getGlobal().info("prePhase: " + renderContext.renderPhase.name());
    }
    @Override
    public void inPhase(RenderContext renderContext) {
        Logger.getGlobal().info("inPhase: " + renderContext.renderPhase.name());
    }
    @Override
    public void postPhase(RenderContext renderContext) {
        Logger.getGlobal().info("postPhase: " + render.context.renderPhase.name());
    }
}
```

## Rendering Phases

DocumentBefore each document is rendered.PageBefore each page is rendered. \[progress queued\]HeaderBefore the page header is drawn. \[progress queued\]BodyBefore the page body is drawn. \[progress queued\]FooterBefore the page footer is drawn. \[progress queued\]LineBefore each line is rendered.BarBefore each bar is rendered. >The final bar is not invoked.TextBefore each line of text is rendered. \[progress queued\]LyricsBefore each line of lyrics is rendered.# Document Structure

```
-Document
---Page
----Header
----Body
-----Line
------Bar
----Footer
```

## Bar Anatomy

form and repeat lines bar text bar header bar contents (barline, meter, chords, middle text) bar footrer bar text lyric-line padding

# I-Doc

## Major Internal Features

- OSGI DS like service manager for GWT
- c2d plugin for jsPDF
- Gray Bars
- Uses same graphics code for canvas rendering and exports as eBook/PDF
- Book and Page plugin architecture
- goodies

# P-Doc

- Plugins (Goodies) can alter the rendering process.
- Multiple document type suport
- Document flavor support
- Import and export from a variety of sources and formats

 [ ](https://www.twelvetone.tv/docs/arts-and-education/quickchords/quickchords-document-types) [](https://www.twelvetone.tv/docs/arts-and-education/quickchords/change-log)

---

## Navigation

- Parent: [QuickChords](https://www.twelvetone.tv/docs/arts-and-education/quickchords.md)
- Previous: [Document Types And Flavors](https://www.twelvetone.tv/docs/arts-and-education/quickchords/quickchords-document-types.md)
- Next: [Change Log](https://www.twelvetone.tv/docs/arts-and-education/quickchords/change-log.md)
