2019-04-11 14:40:54 +08:00
// Copyright (c) 2016-2018 Kiwano - Nomango
2019-03-31 01:37:06 +08:00
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
# pragma once
2019-08-18 10:23:54 +08:00
# include "win32/D2DDeviceResources.h"
2019-03-31 01:37:06 +08:00
2019-04-11 14:40:54 +08:00
namespace kiwano
2019-03-31 01:37:06 +08:00
{
2019-08-21 16:33:41 +08:00
// <20> <> ֵģʽ
// <20> <> ֵģʽ ָ<CABD> <D6B8> <EFBFBD> <EFBFBD> λͼ<CEBB> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> ź<EFBFBD> <C5BA> <EFBFBD> תʱ<D7AA> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɫ<EFBFBD> ļ<EFBFBD> <C4BC> 㷽ʽ
// Linear (˫<> <CBAB> <EFBFBD> Բ<EFBFBD> ֵ): <20> <> <EFBFBD> <EFBFBD> Χ <EFBFBD> ĸ<EFBFBD> <C4B8> <EFBFBD> <EFBFBD> ؽ<EFBFBD> <D8BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Բ<EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> , <20> <> ͼ<EFBFBD> <CDBC> <EFBFBD> Ŵ<EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> ܻ<EFBFBD> ģ<EFBFBD> <C4A3> <EFBFBD> <EFBFBD> Ĭ<EFBFBD> ϣ<EFBFBD>
// Nearest (<28> <> <EFBFBD> ڽ<EFBFBD> <DABD> <EFBFBD> ֵ): ȡ<> <C8A1> <EFBFBD> ڽ<EFBFBD> <DABD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ص<EFBFBD> <D8B5> <EFBFBD> <EFBFBD> <EFBFBD> ɫֵ
enum class InterpolationMode
{
Linear , // ˫<> <CBAB> <EFBFBD> Բ<EFBFBD> ֵ
Nearest , // <20> <> <EFBFBD> ڽ<EFBFBD> <DABD> <EFBFBD> ֵ
} ;
// <20> <> <EFBFBD> <EFBFBD>
class KGE_API Texture
2019-03-31 01:37:06 +08:00
{
public :
2019-08-21 16:33:41 +08:00
Texture ( ) ;
2019-03-31 01:37:06 +08:00
2019-08-21 16:33:41 +08:00
explicit Texture (
2019-08-18 17:49:13 +08:00
String const & file_path
) ;
2019-08-21 16:33:41 +08:00
explicit Texture (
2019-08-16 00:50:54 +08:00
Resource const & res
) ;
2019-08-21 16:33:41 +08:00
explicit Texture (
2019-03-31 01:37:06 +08:00
ComPtr < ID2D1Bitmap > const & bitmap
) ;
2019-08-21 16:33:41 +08:00
virtual ~ Texture ( ) ;
2019-03-31 01:37:06 +08:00
2019-08-18 17:49:13 +08:00
// <20> <> <EFBFBD> ر<EFBFBD> <D8B1> <EFBFBD> <EFBFBD> ļ<EFBFBD>
bool Load (
String const & file_path
) ;
2019-08-16 00:50:54 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ
bool Load (
Resource const & res
) ;
2019-03-31 01:37:06 +08:00
// <20> <> Դ<EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> Ч
bool IsValid ( ) const ;
2019-08-21 16:33:41 +08:00
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD>
2019-08-18 22:49:44 +08:00
Float32 GetWidth ( ) const ;
2019-03-31 01:37:06 +08:00
2019-08-21 16:33:41 +08:00
// <20> <> ȡ<EFBFBD> ߶<EFBFBD>
2019-08-18 22:49:44 +08:00
Float32 GetHeight ( ) const ;
2019-03-31 01:37:06 +08:00
2019-08-21 16:33:41 +08:00
// <20> <> ȡ<EFBFBD> <C8A1> С
2019-03-31 01:37:06 +08:00
Size GetSize ( ) const ;
2019-08-21 16:33:41 +08:00
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ؿ<EFBFBD> <D8BF> <EFBFBD>
2019-08-18 22:49:44 +08:00
UInt32 GetWidthInPixels ( ) const ;
2019-03-31 01:37:06 +08:00
2019-08-21 16:33:41 +08:00
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ظ߶<D8B8>
2019-08-18 22:49:44 +08:00
UInt32 GetHeightInPixels ( ) const ;
2019-03-31 01:37:06 +08:00
2019-08-21 16:33:41 +08:00
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ش<EFBFBD> С
2019-08-18 22:49:44 +08:00
math : : Vec2T < UInt32 > GetSizeInPixels ( ) const ;
2019-03-31 01:37:06 +08:00
2019-08-21 16:33:41 +08:00
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ز<EFBFBD> ֵ<EFBFBD> <D6B5> ʽ
InterpolationMode GetBitmapInterpolationMode ( ) const ;
2019-08-16 00:50:54 +08:00
// <20> <> <EFBFBD> <EFBFBD> λͼ<CEBB> ڴ<EFBFBD>
2019-08-21 16:33:41 +08:00
void CopyFrom ( Texture const & copy_from ) ;
2019-08-16 00:50:54 +08:00
// <20> <> <EFBFBD> <EFBFBD> λͼ<CEBB> ڴ<EFBFBD>
2019-08-21 16:33:41 +08:00
void CopyFrom ( Texture const & copy_from , Rect const & src_rect , Point const & dest_point ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ز<EFBFBD> ֵ<EFBFBD> <D6B5> ʽ
void SetInterpolationMode ( InterpolationMode mode ) ;
// <20> <> <EFBFBD> <EFBFBD> Ĭ<EFBFBD> ϵ<EFBFBD> <CFB5> <EFBFBD> <EFBFBD> ز<EFBFBD> ֵ<EFBFBD> <D6B5> ʽ
static void SetDefaultInterpolationMode ( InterpolationMode mode ) ;
2019-08-16 00:50:54 +08:00
public :
2019-08-13 14:44:37 +08:00
// <20> <> ȡԴλͼ
ComPtr < ID2D1Bitmap > GetBitmap ( ) const ;
2019-03-31 01:37:06 +08:00
2019-08-13 14:44:37 +08:00
// <20> <> <EFBFBD> <EFBFBD> Դλͼ
void SetBitmap ( ComPtr < ID2D1Bitmap > bitmap ) ;
2019-03-31 01:37:06 +08:00
2019-08-16 00:50:54 +08:00
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ظ<EFBFBD> ʽ
D2D1_PIXEL_FORMAT GetPixelFormat ( ) const ;
2019-03-31 01:37:06 +08:00
protected :
ComPtr < ID2D1Bitmap > bitmap_ ;
2019-08-21 16:33:41 +08:00
InterpolationMode interpolation_mode_ ;
static InterpolationMode default_interpolation_mode_ ;
2019-03-31 01:37:06 +08:00
} ;
}