npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pixi-textstyle-manager

v1.0.3

Published

Simple manager for text styles used in PIXI.js

Downloads

13

Readme

pixi-textstyle-manager

Simple library for manage styles of PIXI.Text. You can use one config file with styles for texts, and change style directly for one text or for all texts in one time.
You can create json file with styles and download it, on set styles config object directly to TextStyleManager.
Don't forget write issues or proposal :)

Important! Look example in this doc to understand how its works.

Installation

Use simple npm install command to install this library.
In your project you must import TextStyleManager.

npm install pixi-textstyle-manager

How to use

Import TextStyleManager.

import TextStyleManager from 'pixi-textstyle-manager';

Loading config file

Config file must be json and follow this structure:

{
  "styles": {
    "default": {
      "fontFamily": "Arial"
    }
  },
  "textFields": {
    "default": {
      "default": ["default"]
    }
  },
  "metadata": {
    "type": "FlashLibStyledText"
  }
}
  • styles - object included all styles for all text fields.
    • all members must have like PIXI.TextStyle structure.
    • must include 'default' object with default style (style can be empty {}).
    • one style in this list can be used for different texts, so you don't need to create same styles for different texts, you can create only one.
  • textFields - object with description which styles must use text for different states.
    • must include 'default' object for using to text by default.
    • every state can contain many styles.
    • when style applying, each next style replaces the same parameter from the previous style.
  • metadata - special data for loader plugin. Must be like this.

For loading config file and adding to TextStyleManager use PIXI.Loaded.

PIXI.loader.add('TextsStyles', './TextsStyles.json');

After loading styles from this config will be added automatically.

Using config directly without config file

If you don't want loading json file, you can set config directly to TextStyleManager.
Object format similar to json config, but don't needed metadata.

TextStyleManager.addConfig({
            "styles": {
                "default": {
                    "fontFamily": "Arial",
                }
            },
            "textFields": {
                "default": {
                    "default": ["default"]
                }
            }
        });

Example

Config file

For example, we have very simple config file:

{
  "styles": {
    "default": {
      "fontFamily": "Arial",
      "fill": "#000000"
    },
    "en": {
      "fontFamily": "Comic Sans",
      "stroke": "#FFFFFF",
      "strokeThickness": 3
    },
    "ru": {
      "fontFamily": "Times New Roman",
      "fontSize": 30,
      "dropShadow": true
    },
    "redText": {
      "fill": "#FF0000"
    },
    "yellowText": {
      "fill": "#FFFF00"
    },
    "blueText": {
      "fill": "#0000FF"
    },
    "boldText": {
      "fontWeight": "bold"
    },
    "italicText": {
      "fontStyle": "italic"
    },
    "highlight": {
      "fill": "#000000",
      "stroke": "#FFFFFF",
      "strokeThickness": 5
    }
  },
  "textFields": {
    "default": {
      "default": ["default"]
    },

    "text1": {
      "default": ["blueText"],
      "en_gb": ["en", "redText", "boldText"],
      "ru_ru": ["ru", "yellowText", "italicText"]
    },
    "text2": {
      "default": ["blueText"],
      "en_gb": ["en", "redText", "boldText"],
      "ru_ru": ["ru", "yellowText"]
    },
    "text3": {
      "default": ["blueText"],
      "en_gb": ["en", "redText"],
      "ru_ru": ["ru", "yellowText", "italicText"],
      "highlight": ["highlight"]
    }
  },
  "metadata": {
    "type": "FlashLibStyledText"
  }
}

In config, we have 7 different styles (except default). This styles have this names:

  • en
  • ru
  • redText
  • greenText
  • blueText
  • boldText
  • italicText
  • highlight

Styles not must be simple like this. They can contains many parameters. I use simple styles just for this example.

Next, we have description for 3 Texts (except default):

  • text1
  • text2
  • text3

Each of these Texts have 3 states:

  • default - will be used if setted state not defined.
    • this state contains style called "blueText".
      So if this state will be applied, to Text style will be added style "blueText" from styles config.
  • en_gb - will be used some styles
    • in text1, en_gb has 3 style ("en", "redText", "boldText").
      All these styles from the style config will be applied for the text style,
      but each next style replaces the same parameter from the previous style.
  • ru_ru - another one state, but works same for another.

Code

We have simple 3 PIXI.Texts

import * as PIXI from "pixi.js";
import FlashLibStyledText from "pixi-textstyle-manager";

///

let text1 = new PIXI.Text('Text1');
text1.x = 50;
text1.y = 50
this.addChild(text1);

let text2 = new PIXI.Text('Text2');
text2.x = 50;
text2.y = 100
this.addChild(text2);

let text3 = new PIXI.Text('Text3');
text3.x = 50;
text3.y = 150
this.addChild(text3);

FlashLibStyledText.addTextField(text1, 'text1');
FlashLibStyledText.addTextField(text2, 'text2');
FlashLibStyledText.addTextField(text3, 'text3');

In this conde created 3 simple PIXI.Text.
Then this Texts added to FlashLibStyledText using addTextField.
First parameter - Text which will be added.
Second parameter - identificator for this Text.
If you don't specify this parameter, FlashLibStyledText will be use "name" parameter from Text as identificator.
Now text looks like this:

All Texts setted to default state and used "blueText" style.
We can change style to "en_gb" for all Texts.

TextStyleManager.currentStyle = 'en_gb';

For all Texts will be applied stales from "en_gb" state.

Now text1 and text2 have "en", "redText" and "boldText" styles, and text3 have "en", "redText".
Change state to "ru_ru":

TextStyleManager.currentStyle = 'ru_ru';

For Texts applied styles from "ru_ru":

text3 have "highlight" state with one parameter, but text1 and text2 doesen't.
If TextStyleManager.currentStyle will be setted to "highlight", for text1 and text2 will be applied "default" state.

TextStyleManager.currentStyle = 'highlight';

TextStyleManager can set state directly for Text:

TextStyleManager.setTextStyle(text1, "en_gb");
TextStyleManager.setTextStyle(text2, "ru_ru");
TextStyleManager.setTextStyle(text1, "highlight");

P.S.

For now that's all :)
Enjoy this and other of my libraries.
Don't forget write issues or proposal :)


Contacts

Telegram @rocket_ua