mirror of
https://github.com/dankamongmen/notcurses
synced 2025-03-09 17:19:03 -04:00
[Misc] A hodgepodge of tiny changes
CMake: Simplify cmake target+version config generation and make it actually work. With the changes it is now possible to detect and use `Notcurses` in the following way: find_package(Notcurses REQUIRED) ... target_link_libraries(myapp PRIVATE notcurses::notcurses) Also, added the same CMake configuration for `Notcurses++`, to be used in the following way: find_package(Notcurses REQUIRED find_package(Notcurses++ REQUIRED) ... target_link_libraries(myapp PRIVATE notcurses++::notcurses++) Docs: `notcurses_cell(3)`: `cell_styles_{on,off} -> cell_{on,off}_styles` and `cell_load_simple` -> `cell_load_char` C++ API: * Plane: added constructors taking `ncplane_options const&` instead of the multitude of individual parameters * Plane: drop `struct` when `ncplane_options` is used. * Plane: added `strdup` (`cell_strdup`) * Plane: added `extract` (`cell_extract`)
This commit is contained in:
parent
059007bd50
commit
c5c9432ac0
@ -601,23 +601,47 @@ include(CMakePackageConfigHelpers)
|
|||||||
configure_file(tools/version.h.in include/version.h)
|
configure_file(tools/version.h.in include/version.h)
|
||||||
configure_file(tools/builddef.h.in include/builddef.h)
|
configure_file(tools/builddef.h.in include/builddef.h)
|
||||||
|
|
||||||
configure_package_config_file(tools/NotcursesConfig.cmake.in
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfig.cmake
|
|
||||||
INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/notcurses/cmake
|
|
||||||
)
|
|
||||||
|
|
||||||
write_basic_package_version_file(
|
write_basic_package_version_file(
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake
|
${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake
|
||||||
COMPATIBILITY SameMajorVersion
|
COMPATIBILITY SameMajorVersion
|
||||||
)
|
)
|
||||||
|
|
||||||
|
write_basic_package_version_file(
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Notcurses++ConfigVersion.cmake
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
install(FILES
|
install(FILES
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfig.cmake"
|
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake"
|
||||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses"
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
install(TARGETS notcurses
|
||||||
|
EXPORT "NotcursesTargets"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(EXPORT "NotcursesTargets"
|
||||||
|
NAMESPACE "notcurses::"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses"
|
||||||
|
FILE "NotcursesConfig.cmake"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/Notcurses++ConfigVersion.cmake"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses++"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS notcurses++
|
||||||
|
EXPORT "Notcurses++Targets"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(EXPORT "Notcurses++Targets"
|
||||||
|
NAMESPACE "notcurses++::"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses++"
|
||||||
|
FILE "Notcurses++Config.cmake"
|
||||||
|
)
|
||||||
|
|
||||||
install(FILES
|
install(FILES
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/notcurses.pc
|
${CMAKE_CURRENT_BINARY_DIR}/notcurses.pc
|
||||||
DESTINATION ${PKGCONFIG_DIR}
|
DESTINATION ${PKGCONFIG_DIR}
|
||||||
|
@ -56,9 +56,9 @@ typedef struct cell {
|
|||||||
|
|
||||||
**unsigned cell_styles(const cell* ***c***);**
|
**unsigned cell_styles(const cell* ***c***);**
|
||||||
|
|
||||||
**void cell_styles_on(cell* ***c***, unsigned ***stylebits***);**
|
**void cell_on_styles(cell* ***c***, unsigned ***stylebits***);**
|
||||||
|
|
||||||
**void cell_styles_off(cell* ***c***, unsigned ***stylebits***);**
|
**void cell_off_styles(cell* ***c***, unsigned ***stylebits***);**
|
||||||
|
|
||||||
**void cell_set_fg_default(cell* ***c***);**
|
**void cell_set_fg_default(cell* ***c***);**
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ typedef struct cell {
|
|||||||
|
|
||||||
**char* cell_strdup(const struct ncplane* ***n***, const cell* ***c***);**
|
**char* cell_strdup(const struct ncplane* ***n***, const cell* ***c***);**
|
||||||
|
|
||||||
**int cell_load_simple(struct ncplane* ***n***, cell* ***c***, char ***ch***);**
|
**int cell_load_char(struct ncplane* ***n***, cell* ***c***, char ***ch***);**
|
||||||
|
|
||||||
**char* cell_extract(const struct ncplane* ***n***, const cell* ***c***, uint16_t* ***stylemask***, uint64_t* ***channels***);**
|
**char* cell_extract(const struct ncplane* ***n***, const cell* ***c***, uint16_t* ***stylemask***, uint64_t* ***channels***);**
|
||||||
|
|
||||||
|
@ -60,6 +60,20 @@ namespace ncpp
|
|||||||
plane = create_plane (*n, rows, cols, yoff, xoff, opaque);
|
plane = create_plane (*n, rows, cols, yoff, xoff, opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
explicit Plane (Plane *n, ncplane_options const& nopts, NotCurses *ncinst = nullptr)
|
||||||
|
: Plane (static_cast<const Plane*>(n), nopts, ncinst)
|
||||||
|
{}
|
||||||
|
|
||||||
|
explicit Plane (const Plane *n, ncplane_options const& nopts, NotCurses *ncinst = nullptr)
|
||||||
|
: Root (ncinst)
|
||||||
|
{
|
||||||
|
if (n == nullptr) {
|
||||||
|
throw invalid_argument ("'n' must be a valid pointer");
|
||||||
|
}
|
||||||
|
|
||||||
|
plane = create_plane (*n, nopts);
|
||||||
|
}
|
||||||
|
|
||||||
explicit Plane (const Plane &n, int rows, int cols, int yoff, int xoff, void *opaque = nullptr)
|
explicit Plane (const Plane &n, int rows, int cols, int yoff, int xoff, void *opaque = nullptr)
|
||||||
: Root (nullptr)
|
: Root (nullptr)
|
||||||
{
|
{
|
||||||
@ -69,7 +83,7 @@ namespace ncpp
|
|||||||
explicit Plane (int rows, int cols, int yoff, int xoff, void *opaque = nullptr, NotCurses *ncinst = nullptr)
|
explicit Plane (int rows, int cols, int yoff, int xoff, void *opaque = nullptr, NotCurses *ncinst = nullptr)
|
||||||
: Root (ncinst)
|
: Root (ncinst)
|
||||||
{
|
{
|
||||||
struct ncplane_options nopts = {
|
ncplane_options nopts = {
|
||||||
.y = yoff,
|
.y = yoff,
|
||||||
.x = xoff,
|
.x = xoff,
|
||||||
.rows = rows,
|
.rows = rows,
|
||||||
@ -102,6 +116,16 @@ namespace ncpp
|
|||||||
plane = create_plane (const_cast<Plane&>(n), rows, cols, yoff, align, opaque);
|
plane = create_plane (const_cast<Plane&>(n), rows, cols, yoff, align, opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
explicit Plane (Plane &n, ncplane_options const& nopts, NotCurses *ncinst = nullptr)
|
||||||
|
: Plane (static_cast<Plane const&>(n), nopts, ncinst)
|
||||||
|
{}
|
||||||
|
|
||||||
|
explicit Plane (Plane const& n, ncplane_options const& nopts, NotCurses *ncinst = nullptr)
|
||||||
|
: Root (ncinst)
|
||||||
|
{
|
||||||
|
plane = create_plane (n, nopts);
|
||||||
|
}
|
||||||
|
|
||||||
explicit Plane (Plane *n, int rows, int cols, int yoff, NCAlign align, void *opaque = nullptr)
|
explicit Plane (Plane *n, int rows, int cols, int yoff, NCAlign align, void *opaque = nullptr)
|
||||||
: Root (nullptr)
|
: Root (nullptr)
|
||||||
{
|
{
|
||||||
@ -1130,6 +1154,16 @@ namespace ncpp
|
|||||||
return error_guard (ncplane_rotate_ccw (plane), -1);
|
return error_guard (ncplane_rotate_ccw (plane), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* strdup (Cell const& cell) const noexcept
|
||||||
|
{
|
||||||
|
return cell_strdup (plane, cell);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* extract (Cell const& cell, uint16_t *stylemask = nullptr, uint64_t *channels = nullptr)
|
||||||
|
{
|
||||||
|
return cell_extract (plane, cell, stylemask, channels);
|
||||||
|
}
|
||||||
|
|
||||||
const char* get_extended_gcluster (Cell &cell) const noexcept
|
const char* get_extended_gcluster (Cell &cell) const noexcept
|
||||||
{
|
{
|
||||||
return cell_extended_gcluster (plane, cell);
|
return cell_extended_gcluster (plane, cell);
|
||||||
@ -1227,9 +1261,9 @@ namespace ncpp
|
|||||||
private:
|
private:
|
||||||
ncplane* create_plane (const Plane &n, int rows, int cols, int yoff, int xoff, void *opaque)
|
ncplane* create_plane (const Plane &n, int rows, int cols, int yoff, int xoff, void *opaque)
|
||||||
{
|
{
|
||||||
struct ncplane_options nopts = {
|
ncplane_options nopts = {
|
||||||
.y = yoff,
|
.y = yoff,
|
||||||
.x = xoff,
|
.x = xoff,
|
||||||
.rows = rows,
|
.rows = rows,
|
||||||
.cols = cols,
|
.cols = cols,
|
||||||
.userptr = opaque,
|
.userptr = opaque,
|
||||||
@ -1237,17 +1271,7 @@ namespace ncpp
|
|||||||
.resizecb = nullptr,
|
.resizecb = nullptr,
|
||||||
.flags = 0,
|
.flags = 0,
|
||||||
};
|
};
|
||||||
ncplane *ret = ncplane_create (
|
return create_plane (n, nopts);
|
||||||
n.plane,
|
|
||||||
&nopts
|
|
||||||
);
|
|
||||||
|
|
||||||
if (ret == nullptr)
|
|
||||||
throw init_error ("Notcurses failed to create a new plane");
|
|
||||||
|
|
||||||
map_plane (plane, this);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ncplane* create_plane (Plane &n, int rows, int cols, int yoff, NCAlign align, void *opaque)
|
ncplane* create_plane (Plane &n, int rows, int cols, int yoff, NCAlign align, void *opaque)
|
||||||
@ -1262,16 +1286,21 @@ namespace ncpp
|
|||||||
nullptr,
|
nullptr,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
return create_plane (n, nopts);
|
||||||
|
}
|
||||||
|
|
||||||
|
ncplane* create_plane (const Plane &n, ncplane_options const& nopts)
|
||||||
|
{
|
||||||
ncplane *ret = ncplane_create (
|
ncplane *ret = ncplane_create (
|
||||||
n.plane,
|
n.plane,
|
||||||
&nopts
|
&nopts
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ret == nullptr)
|
if (ret == nullptr) {
|
||||||
throw init_error ("Notcurses failed to create an aligned plane");
|
throw init_error ("Notcurses failed to create an aligned plane");
|
||||||
|
}
|
||||||
|
|
||||||
map_plane (plane, this);
|
map_plane (plane, this);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
@PACKAGE_INIT@
|
|
||||||
set(Notcurses_DIR "@PACKAGE_SOME_INSTALL_DIR@")
|
|
||||||
|
|
||||||
# Compute paths
|
|
||||||
get_filename_component(Notcurses_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
|
||||||
set(Notcurses_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
|
|
||||||
set(Notcurses_LIBRARY_DIRS "@CONF_LIBRARY_DIRS@")
|
|
||||||
|
|
||||||
set(Notcurses_LIBRARIES -lnotcurses)
|
|
Loading…
x
Reference in New Issue
Block a user