Files
fastfetch/src/fastfetch.h
T
2023-10-26 16:22:05 +08:00

86 lines
1.5 KiB
C

#pragma once
#ifndef FASTFETCH_INCLUDED
#define FASTFETCH_INCLUDED
#include "fastfetch_config.h"
#include <stdint.h>
#include <stdbool.h>
#ifdef FF_USE_SYSTEM_YYJSON
#include <yyjson.h>
#else
#include "3rdparty/yyjson/yyjson.h"
#endif
#ifdef _MSC_VER
#define __attribute__(x)
#endif
#include "util/FFstrbuf.h"
#include "util/FFlist.h"
#include "util/platform/FFPlatform.h"
#include "util/unused.h"
#include "options/modules.h"
#include "options/logo.h"
#include "options/display.h"
#include "options/general.h"
#include "options/library.h"
typedef struct FFconfig
{
FFOptionsLogo logo;
FFOptionsDisplay display;
FFOptionsGeneral general;
FFOptionsModules modules;
FFOptionsLibrary library;
} FFconfig;
typedef struct FFstate
{
uint32_t logoWidth;
uint32_t logoHeight;
uint32_t keysHeight;
FFPlatform platform;
yyjson_doc* configDoc;
yyjson_mut_doc* resultDoc;
FFstrbuf migrateConfigPath;
} FFstate;
typedef struct FFinstance
{
FFconfig config;
FFstate state;
} FFinstance;
extern FFinstance instance; // Defined in `common/init.c`
extern FFModuleBaseInfo** ffModuleInfos[];
//////////////////////
// Init functions //
//////////////////////
//common/init.c
void ffInitInstance();
void ffStart();
void ffFinish();
void ffDestroyInstance();
void ffListFeatures();
////////////////////
// Logo functions //
////////////////////
void ffLogoPrint();
void ffLogoPrintRemaining();
void ffLogoPrintLine();
void ffLogoBuiltinPrint();
void ffLogoBuiltinList();
void ffLogoBuiltinListAutocompletion();
#endif