Beispiel #1
0
/**
 * Resolves the line breaking class for certain ambiguous or complicated
 * characters.  They are treated in a simplistic way in this
 * implementation.
 *
 * @param lbc   line breaking class to resolve
 * @param lang  language of the text
 * @return      the resolved line breaking class
 */
static enum LineBreakClass resolve_lb_class(
        enum LineBreakClass lbc,
        const char *lang)
{
    switch (lbc)
    {
    case LBP_AI:
        if (lang != NULL &&
                (strncmp(lang, "zh", 2) == 0 || /* Chinese */
                 strncmp(lang, "ja", 2) == 0 || /* Japanese */
                 strncmp(lang, "ko", 2) == 0))  /* Korean */
        {
            return LBP_ID;
        }
        else
        {
            return LBP_AL;
        }
    case LBP_CJ:
        /* `Strict' and `normal' line breaking.  See
         * <url:http://www.unicode.org/reports/tr14/#CJ>
         * for details. */
        if (ENDS_WITH(lang, "-strict"))
        {
            return LBP_NS;
        }
        else
        {
            return LBP_ID;
        }
    case LBP_SA:
    case LBP_SG:
    case LBP_XX:
        return LBP_AL;
    default:
        return lbc;
    }
}
Beispiel #2
0
int main (int argc, char *argv[])
{
//  gtk_set_locale ();
    gtk_init (&argc, &argv);

    {                           /* Add the Balsa installation dir (or BALSAHOME/share) as the first path element */
        char *balsaHome = getenv ("BALSAHOME");
        char *shareDir;

        if (!balsaHome)
            balsaHome = BALSAHOME;

        shareDir = g_strconcat (balsaHome, "/share", NULL);
        LibBreeze_AddIncludePath (shareDir);
        g_free (shareDir);
    }

    /* Add the current directory as the secondpath element */
    char *currentDir = g_get_current_dir ();

    LibBreeze_AddIncludePath (currentDir);

    setvbuf (stdout, NULL, _IOLBF, 0);

    if (argc < 2)
    {
        printf ("Usage: %s [<options>] file\n"
          " All options are parsed, used if recognised, and passed to breeze-sim.\n"
          " Recognised options:\n"
          "  -I (--include) <dir>\n" "  -k (--keep-channel-numbers)\n" "  -l (--layout) <filename>\n" "  -p (--part) <part name>\n", *argv);
        exit (EXIT_FAILURE);
    }

    int i;

    for (i = 1; i < argc - 1; i++)
    {
        if (BEGINS_WITH (argv[i], "-I") || BEGINS_WITH (argv[i], "--include"))
        {
            if (!argv[i + 1])
            {
                fprintf (stderr, "Usage: -I <dir>\n");
                exit (EXIT_FAILURE);
            }

            LibBreeze_AddIncludePath (argv[i + 1]);
            i++;
        } else if (BEGINS_WITH (argv[i], "-k") || BEGINS_WITH (argv[i], "--keep-channel-numbers"))
        {
            save_channel_numbers = TRUE;
        } else if (BEGINS_WITH (argv[i], "-l") || BEGINS_WITH (argv[i], "--layout"))
        {
            if (!argv[i + 1])
            {
                fprintf (stderr, "Usage: -l (--layout) <filename>\n");
                exit (EXIT_FAILURE);
            }

            layoutFilename = g_strdup (argv[i + 1]);
            i++;
        } else if (BEGINS_WITH (argv[i], "-p") || BEGINS_WITH (argv[i], "--part"))
        {
            if (!argv[i + 1])
            {
                fprintf (stderr, "Usage: -p (--part) <part name>\n");
                exit (EXIT_FAILURE);
            }

            partName = g_strdup (argv[i + 1]);
            i++;
        }
    }

    projectName = g_strdup (argv[argc - 1]);

    TryParsingScript (projectName, 1);

    if (ENDS_WITH (projectName, ".breeze"))
        projectName[strlen (projectName) - strlen (".breeze")] = 0;

    projectNameWithPath = g_strdup_printf ("%s/%s", currentDir, projectName);
    g_free (currentDir);

    breezesim_passedArgs = g_new0 (char *, argc - 2);
    memcpy (breezesim_passedArgs, argv + 1, (argc - 2) * sizeof (char *));
    breezesim_passedArgCount = argc - 2;

    if (CheckForSameSimulationRunning ())
    {
        GtkWidget *msg = create_BreezeSimCtrlAlreadyRunning ();

        gtk_widget_show (msg);
        pidFilename = 0;
    } else
        main_finish_initialisation ();

    gtk_main ();

    if (pidFilename)
        remove (pidFilename);

    return 0;
}