Remove dependency with Allegro library in config.h file

* Created base::write24bits() function (and detect endianness with a
  special base/config.h.cmakein)
* Use _WIN32 instead of ALLEGRO_WINDOWS
* Use _DEBUG instead of DEBUGMODE
* Replaced AL_CONST with "const" in bmp_format.cpp
* Replace stricmp() with base::utf8_icmp()
This commit is contained in:
David Capello 2015-02-12 10:55:58 -03:00
parent 22f35ab249
commit 16da2512b4
13 changed files with 198 additions and 73 deletions

View File

@ -182,9 +182,6 @@ if(ENABLE_UPDATER)
set(aseprite_libraries ${aseprite_libraries} updater-lib net-lib)
add_definitions(-DENABLE_UPDATER)
add_subdirectory(net)
add_subdirectory(updater)
endif()
if(ENABLE_WEBSERVER)
@ -193,8 +190,6 @@ if(ENABLE_WEBSERVER)
set(aseprite_libraries ${aseprite_libraries} webserver-lib)
add_definitions(-DENABLE_WEBSERVER)
add_subdirectory(webserver)
endif()
# Full-version or trial-mode?
@ -208,6 +203,8 @@ endif()
# Aseprite Libraries (in preferred order to be built)
add_subdirectory(base)
include_directories(${BASE_INCLUDE_DIR})
add_subdirectory(cfg)
add_subdirectory(css)
add_subdirectory(doc)
@ -221,6 +218,15 @@ add_subdirectory(she)
add_subdirectory(ui)
add_subdirectory(undo)
if(ENABLE_UPDATER)
add_subdirectory(net)
add_subdirectory(updater)
endif()
if(ENABLE_WEBSERVER)
add_subdirectory(webserver)
endif()
add_subdirectory(app)
if(V8_FOUND)

View File

@ -27,7 +27,7 @@
#include "ui/system.h"
#include "ui/theme.h"
#if defined ALLEGRO_WINDOWS && defined DEBUGMODE
#if defined _WIN32 && defined _DEBUG
#include <windows.h>
#include <psapi.h>
#endif

View File

@ -1,5 +1,5 @@
/* Aseprite
* Copyright (C) 2001-2013 David Capello
* Copyright (C) 2001-2015 David Capello
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -354,7 +354,7 @@ static void read_32bit_line(int length, FILE *f, Image *image, int line)
/* read_image:
* For reading the noncompressed BMP image format.
*/
static void read_image(FILE *f, Image *image, AL_CONST BITMAPINFOHEADER *infoheader, FileOp *fop)
static void read_image(FILE *f, Image *image, const BITMAPINFOHEADER *infoheader, FileOp *fop)
{
int i, line, height, dir;
@ -385,7 +385,7 @@ static void read_image(FILE *f, Image *image, AL_CONST BITMAPINFOHEADER *infohea
* @note This support compressed top-down bitmaps, the MSDN says that
* they can't exist, but Photoshop can create them.
*/
static void read_rle8_compressed_image(FILE *f, Image *image, AL_CONST BITMAPINFOHEADER *infoheader)
static void read_rle8_compressed_image(FILE *f, Image *image, const BITMAPINFOHEADER *infoheader)
{
unsigned char count, val, val0;
int j, pos, line, height, dir;
@ -460,7 +460,7 @@ static void read_rle8_compressed_image(FILE *f, Image *image, AL_CONST BITMAPINF
* @note This support compressed top-down bitmaps, the MSDN says that
* they can't exist, but Photoshop can create them.
*/
static void read_rle4_compressed_image(FILE *f, Image *image, AL_CONST BITMAPINFOHEADER *infoheader)
static void read_rle4_compressed_image(FILE *f, Image *image, const BITMAPINFOHEADER *infoheader)
{
unsigned char b[8];
unsigned char count;

View File

@ -45,6 +45,7 @@
#include "ui/alert.h"
#include <cstring>
#include <cstdarg>
namespace app {

View File

@ -25,6 +25,7 @@
#include "app/file/file_formats_manager.h"
#include "app/file/file_format.h"
#include "app/file/format_options.h"
#include "base/string.h"
namespace app {
@ -91,10 +92,6 @@ FileFormatsList::iterator FileFormatsManager::end()
return m_formats.end();
}
#ifdef _MSC_VER
#pragma warning (disable: 4996) // Disable warning about 'stricmp'
#endif
FileFormat* FileFormatsManager::getFileFormatByExtension(const char* extension) const
{
char buf[512], *tok;
@ -104,7 +101,7 @@ FileFormat* FileFormatsManager::getFileFormatByExtension(const char* extension)
for (tok=strtok(buf, ","); tok;
tok=strtok(NULL, ",")) {
if (stricmp(extension, tok) == 0)
if (base::utf8_icmp(extension, tok) == 0)
return ff;
}
}

37
src/base/24bits.h Normal file
View File

@ -0,0 +1,37 @@
// Aseprite Base Library
// Copyright (c) 2001-2015 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
#ifndef BASE_24BITS_H_INCLUDED
#define BASE_24BITS_H_INCLUDED
#pragma once
#include "base/config.h"
namespace base {
#ifdef ASEPRITE_LITTLE_ENDIAN
template<typename PTR, typename VALUE>
inline void write24bits(PTR* ptr, VALUE value) {
((uint8_t*)ptr)[0] = value;
((uint8_t*)ptr)[1] = value >> 8;
((uint8_t*)ptr)[2] = value >> 16;
}
#elif defined(ASEPRITE_BIG_ENDIAN)
template<typename PTR, typename VALUE>
inline void write24bits(PTR* ptr, VALUE value) {
((uint8_t*)ptr)[0] = value >> 16;
((uint8_t*)ptr)[1] = value >> 8;
((uint8_t*)ptr)[2] = value;
}
#endif
} // namespace base
#endif

View File

@ -2,8 +2,16 @@
# Copyright (c) 2001-2014 David Capello
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
CHECK_C_SOURCE_COMPILES("
check_c_source_compiles("
#include <stdint.h>
int main() {
return 0;
}
" HAVE_STDINT_H)
check_c_source_compiles("
#include <unistd.h>
int main() {
sched_yield();
@ -11,10 +19,26 @@ int main() {
}
" HAVE_SCHED_YIELD)
if(HAVE_SCHED_YIELD)
add_definitions(-DHAVE_SCHED_YIELD)
check_c_source_runs("
int main() {
unsigned long value = 0x40302010ul;
return (((unsigned char*)&value)[0] == 0x10) ? 0: 1;
}
" ASEPRITE_LITTLE_ENDIAN)
if(NOT ASEPRITE_LITTLE_ENDIAN)
set(ASEPRITE_BIG_ENDIAN TRUE)
endif()
# Generate config.h file
configure_file(${CMAKE_CURRENT_LIST_DIR}/config.h.cmakein
${CMAKE_CURRENT_BINARY_DIR}/base/config.h @ONLY)
set(BASE_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}
CACHE STRING "Extra include directory for base lib")
mark_as_advanced(${BASE_INCLUDE_DIR})
include_directories(${BASE_INCLUDE_DIR})
set(BASE_SOURCES
cfile.cpp
chrono.cpp

87
src/base/base.h Normal file
View File

@ -0,0 +1,87 @@
// Aseprite Base Library
// Copyright (c) 2001-2015 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
#ifndef BASE_BASE_H_INCLUDED
#define BASE_BASE_H_INCLUDED
#pragma once
#include "base/config.h"
#include <math.h>
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif
#undef NULL
#ifdef __cplusplus
#define NULL nullptr
#else
#define NULL ((void*)0)
#endif
#undef MIN
#undef MAX
#undef MID
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
#define MID(x,y,z) ((x) > (y) ? ((y) > (z) ? (y) : ((x) > (z) ? \
(z) : (x))) : ((y) > (z) ? ((z) > (x) ? (z) : \
(x)): (y)))
#undef CLAMP
#define CLAMP(x,y,z) MAX((x), MIN((y), (z)))
#undef ABS
#undef SGN
#define ABS(x) (((x) >= 0) ? (x) : (-(x)))
#define SGN(x) (((x) >= 0) ? 1 : -1)
#undef PI
#define PI 3.14159265358979323846
//////////////////////////////////////////////////////////////////////
// Overloaded new/delete operators to detect memory-leaks
#if defined __cplusplus && defined MEMLEAK
#include <new>
#include "base/memory.h"
inline void* operator new(std::size_t size)
{
void* ptr = base_malloc(size);
if (!ptr)
throw std::bad_alloc();
return ptr;
}
inline void operator delete(void* ptr)
{
if (!ptr)
return;
base_free(ptr);
}
inline void* operator new[](std::size_t size)
{
void* ptr = base_malloc(size);
if (!ptr)
throw std::bad_alloc();
return ptr;
}
inline void operator delete[](void* ptr)
{
if (!ptr)
return;
base_free(ptr);
}
#endif
#endif

17
src/base/config.h.cmakein Normal file
View File

@ -0,0 +1,17 @@
// Aseprite Base Library -*- C++ -*-
// Copyright (c) 2001-2015 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
#ifndef BASE_CONFIG_H_INCLUDED
#define BASE_CONFIG_H_INCLUDED
#pragma once
#cmakedefine HAVE_STDINT_H
#cmakedefine HAVE_SCHED_YIELD
#cmakedefine ASEPRITE_LITTLE_ENDIAN
#cmakedefine ASEPRITE_BIG_ENDIAN
#endif

View File

@ -11,6 +11,9 @@
int base_assert(const char* condition, const char* file, int lineNum);
void base_trace(const char* msg, ...);
#undef ASSERT
#undef TRACE
#ifdef _DEBUG
#ifdef WIN32
#include <crtdbg.h>

View File

@ -15,11 +15,11 @@
#include <stdexcept>
#ifdef WIN32
#include <windows.h>
#include <sys/stat.h>
#else
#include <fcntl.h>
#include <windows.h>
#include <sys/stat.h>
#include <io.h>
#endif
#include <fcntl.h>
#ifndef O_BINARY
#define O_BINARY 0

View File

@ -1,5 +1,5 @@
/* Aseprite
* Copyright (C) 2001-2014 David Capello
* Copyright (C) 2001-2015 David Capello
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -49,53 +49,5 @@
// verbose_printf is defined in src/app/log.cpp and used through PRINTF macro
void verbose_printf(const char* format, ...);
#include <math.h>
#undef PI
#define PI 3.14159265358979323846
#include <allegro/base.h>
#include <allegro/debug.h>
#undef ASSERT
#undef TRACE
#include "base/base.h"
#include "base/debug.h"
//////////////////////////////////////////////////////////////////////
// Overloaded new/delete operators to detect memory-leaks
#if defined __cplusplus && defined MEMLEAK
#include <new>
#include "base/memory.h"
inline void* operator new(std::size_t size)
{
void* ptr = base_malloc(size);
if (!ptr)
throw std::bad_alloc();
return ptr;
}
inline void operator delete(void* ptr)
{
if (!ptr)
return;
base_free(ptr);
}
inline void* operator new[](std::size_t size)
{
void* ptr = base_malloc(size);
if (!ptr)
throw std::bad_alloc();
return ptr;
}
inline void operator delete[](void* ptr)
{
if (!ptr)
return;
base_free(ptr);
}
#endif

View File

@ -10,6 +10,7 @@
#include "doc/conversion_she.h"
#include "base/24bits.h"
#include "doc/algo.h"
#include "doc/blend.h"
#include "doc/color_scales.h"
@ -100,7 +101,7 @@ struct Address24bpp
Address24bpp& operator++() { m_ptr += 3; return *this; }
Address24bpp& operator*() { return *this; }
Address24bpp& operator=(uint32_t c) {
WRITE3BYTES(m_ptr, c);
base::write24bits(m_ptr, c);
return *this;
}
};