mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-03 23:04:08 +01:00
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
This commit is contained in:
commit
4202ea5fac
16 changed files with 384 additions and 127 deletions
|
@ -25,6 +25,7 @@
|
|||
<string name="key_tile_back">key_clr_tile_back</string>
|
||||
<string name="key_empty">key_clr_empty</string>
|
||||
<string name="key_clr_crosshairs">key_clr_crosshairs</string>
|
||||
<string name="key_board_theme">key_board_theme</string>
|
||||
<string name="key_relay_host">key_relay_host</string>
|
||||
<string name="key_relay_port">key_relay_port2</string>
|
||||
<string name="key_proxy_port">key_proxy_port</string>
|
||||
|
@ -54,6 +55,7 @@
|
|||
<string name="key_notagain_conndfirst">key_notagain_conndfirst</string>
|
||||
<string name="key_notagain_conndmid">key_notagain_conndmid</string>
|
||||
<string name="key_notagain_dicts">key_notagain_dicts</string>
|
||||
<string name="key_notagain_arrow">key_notagain_arrow</string>
|
||||
|
||||
<string name="relayids_extra">org.eehouse.android.xw4.relayids_extra</string>
|
||||
|
||||
|
@ -80,6 +82,11 @@
|
|||
<item>@string/robot_smart</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="board_themes">
|
||||
<item>@string/black_on_white</item>
|
||||
<item>@string/white_on_black</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="connect_frequencies">
|
||||
<item>@string/connect_thirty_seconds</item>
|
||||
<item>@string/connect_five_mins</item>
|
||||
|
|
|
@ -268,7 +268,7 @@
|
|||
|
||||
<string name="manage_dicts">Choose</string>
|
||||
|
||||
<string name="prefs_colors">Colors</string>
|
||||
<string name="prefs_colors">Individual colors</string>
|
||||
<string name="prefs_colors_summary">Edit colors used on the board</string>
|
||||
<string name="player0">First player</string>
|
||||
<string name="player1">Second player</string>
|
||||
|
@ -287,6 +287,10 @@
|
|||
<string name="tile_back">Tile background</string>
|
||||
<string name="empty">Empty cell/background</string>
|
||||
<string name="clr_crosshairs">Crosshairs color</string>
|
||||
<string name="board_themes">Board color schemes</string>
|
||||
<string name="white_on_black">Dark background</string>
|
||||
<string name="black_on_white">Light background</string>
|
||||
|
||||
<string name="advanced">Advanced</string>
|
||||
<string name="advanced_summary">You may never need these...</string>
|
||||
<string name="relay_host">Relay address</string>
|
||||
|
@ -488,6 +492,14 @@
|
|||
here. Email me at eehouse@eehouse.org for information on building
|
||||
and installing your own dictionaries.</string>
|
||||
|
||||
<string name="not_again_arrow">Moving tiles to the board:\nYou can
|
||||
drag tiles between the rack and the board, or you can tap an
|
||||
empty square to place the board arrow. Rack tiles you tap will
|
||||
replace the arrow (moving it one square in the direction it
|
||||
points.) Tap the arrow once to change its orientation; a second
|
||||
time, to hide it. A checkbox in the Appearance section of
|
||||
Settings will hide it permanently.</string>
|
||||
|
||||
<string name="relay_game_explainf">To start a basic networked two-player
|
||||
game in %s:</string>
|
||||
|
||||
|
|
|
@ -49,11 +49,11 @@
|
|||
<PreferenceScreen android:title="@string/prefs_appearance"
|
||||
android:summary="@string/prefs_appearance_summary"
|
||||
>
|
||||
<CheckBoxPreference android:key="@string/key_color_tiles"
|
||||
android:title="@string/color_tiles"
|
||||
android:summary="@string/color_tiles_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
<!-- <CheckBoxPreference android:key="@string/key_color_tiles" -->
|
||||
<!-- android:title="@string/color_tiles" -->
|
||||
<!-- android:summary="@string/color_tiles_summary" -->
|
||||
<!-- android:defaultValue="true" -->
|
||||
<!-- /> -->
|
||||
<CheckBoxPreference android:key="@string/key_show_arrow"
|
||||
android:title="@string/show_arrow"
|
||||
android:summary="@string/show_arrow_summary"
|
||||
|
@ -69,6 +69,13 @@
|
|||
android:summary="@string/show_bonussum_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
<ListPreference android:key="@string/key_board_theme"
|
||||
android:title="@string/board_themes"
|
||||
android:entries="@array/board_themes"
|
||||
android:entryValues="@array/board_themes"
|
||||
android:defaultValue="@string/white_on_black"
|
||||
/>
|
||||
|
||||
<PreferenceScreen android:title="@string/prefs_colors"
|
||||
android:summary="@string/prefs_colors_summary"
|
||||
>
|
||||
|
@ -112,16 +119,17 @@
|
|||
android:title="@string/bonus_w3x"
|
||||
android:defaultValue="0xAFAFAF"
|
||||
/>
|
||||
<org.eehouse.android.xw4.EditColorPreference
|
||||
android:key="@string/key_tile_back"
|
||||
android:title="@string/tile_back"
|
||||
android:defaultValue="0xFFFF99"
|
||||
/>
|
||||
|
||||
<org.eehouse.android.xw4.EditColorPreference
|
||||
android:key="@string/key_clr_crosshairs"
|
||||
android:title="@string/clr_crosshairs"
|
||||
android:defaultValue="0x7070FF"
|
||||
/>
|
||||
<org.eehouse.android.xw4.EditColorPreference
|
||||
android:key="@string/key_tile_back"
|
||||
android:title="@string/tile_back"
|
||||
android:defaultValue="0xFFFF99"
|
||||
/>
|
||||
<org.eehouse.android.xw4.EditColorPreference
|
||||
android:key="@string/key_empty"
|
||||
android:title="@string/empty"
|
||||
|
|
|
@ -252,7 +252,8 @@ public class BoardActivity extends XWActivity implements UtilCtxt {
|
|||
break;
|
||||
|
||||
default:
|
||||
Assert.assertTrue( false );
|
||||
// just drop it; super.onCreateDialog likely failed
|
||||
break;
|
||||
}
|
||||
}
|
||||
return dialog;
|
||||
|
@ -830,7 +831,7 @@ public class BoardActivity extends XWActivity implements UtilCtxt {
|
|||
} );
|
||||
m_jniThread.start();
|
||||
|
||||
m_view.startHandling( m_jniThread, m_jniGamePtr, m_gi );
|
||||
m_view.startHandling( this, m_jniThread, m_jniGamePtr, m_gi );
|
||||
if ( null != m_xport ) {
|
||||
m_xport.setReceiver( m_jniThread );
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import android.graphics.Paint;
|
|||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import org.eehouse.android.xw4.jni.*;
|
||||
|
@ -63,9 +64,14 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
private Rect m_letterRect;
|
||||
private Drawable m_rightArrow;
|
||||
private Drawable m_downArrow;
|
||||
private boolean m_blackArrow;
|
||||
// m_backgroundUsed: alpha not set ensures inequality
|
||||
private int m_backgroundUsed = 0x00000000;
|
||||
private boolean m_darkOnLight;
|
||||
private Drawable m_origin;
|
||||
private int m_left, m_top;
|
||||
private JNIThread m_jniThread;
|
||||
private XWActivity m_parent;
|
||||
private String[][] m_scores;
|
||||
private String[] m_dictChars;
|
||||
private Rect m_boundsScratch;
|
||||
|
@ -110,6 +116,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
|
||||
private static final int BLACK = 0xFF000000;
|
||||
private static final int WHITE = 0xFFFFFFFF;
|
||||
private static final int FRAME_GREY = 0xFF101010;
|
||||
private static final int GREY = 0xFF7F7F7F;
|
||||
private int[] m_bonusColors;
|
||||
private int[] m_playerColors;
|
||||
|
@ -171,7 +178,6 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
m_strokePaint.setStyle( Paint.Style.STROKE );
|
||||
m_tileStrokePaint = new Paint();
|
||||
m_tileStrokePaint.setStyle( Paint.Style.STROKE );
|
||||
Utils.logf( "stroke starts at " + m_tileStrokePaint.getStrokeWidth() );
|
||||
float curWidth = m_tileStrokePaint.getStrokeWidth();
|
||||
curWidth *= 2;
|
||||
if ( curWidth < 2 ) {
|
||||
|
@ -180,8 +186,6 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
m_tileStrokePaint.setStrokeWidth( curWidth );
|
||||
|
||||
Resources res = getResources();
|
||||
m_rightArrow = res.getDrawable( R.drawable.rightarrow );
|
||||
m_downArrow = res.getDrawable( R.drawable.downarrow );
|
||||
m_origin = res.getDrawable( R.drawable.origin );
|
||||
|
||||
m_boundsScratch = new Rect();
|
||||
|
@ -286,8 +290,10 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
} // layoutBoardOnce
|
||||
|
||||
// BoardHandler interface implementation
|
||||
public void startHandling( JNIThread thread, int gamePtr, CurGameInfo gi )
|
||||
public void startHandling( XWActivity parent, JNIThread thread,
|
||||
int gamePtr, CurGameInfo gi )
|
||||
{
|
||||
m_parent = parent;
|
||||
m_jniThread = thread;
|
||||
m_jniGamePtr = gamePtr;
|
||||
m_gi = gi;
|
||||
|
@ -312,7 +318,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
synchronized( this ) {
|
||||
if ( null != m_canvas ) {
|
||||
if ( 0 == resID ) {
|
||||
clearToBack( rect );
|
||||
fillRect( rect, m_otherColors[CommonPrefs.COLOR_BKGND] );
|
||||
} else {
|
||||
Drawable icon = getResources().getDrawable( resID );
|
||||
icon.setBounds( rect );
|
||||
|
@ -326,7 +332,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
public boolean scoreBegin( Rect rect, int numPlayers, int[] scores,
|
||||
int remCount, int dfs )
|
||||
{
|
||||
clearToBack( rect );
|
||||
fillRect( rect, WHITE );
|
||||
m_canvas.save( Canvas.CLIP_SAVE_FLAG );
|
||||
m_canvas.clipRect(rect);
|
||||
m_scores = new String[numPlayers][];
|
||||
|
@ -434,7 +440,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
String time = String.format( "%s%d:%02d", negSign, secondsLeft/60,
|
||||
secondsLeft%60 );
|
||||
|
||||
clearToBack( rect );
|
||||
fillRect( rect, WHITE );
|
||||
m_fillPaint.setColor( m_playerColors[player] );
|
||||
|
||||
Rect shorter = new Rect( rect );
|
||||
|
@ -472,8 +478,13 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
}
|
||||
}
|
||||
} else if ( pending ) {
|
||||
backColor = BLACK;
|
||||
foreColor = WHITE;
|
||||
if ( darkOnLight() ) {
|
||||
foreColor = WHITE;
|
||||
backColor = BLACK;
|
||||
} else {
|
||||
foreColor = BLACK;
|
||||
backColor = WHITE;
|
||||
}
|
||||
} else {
|
||||
backColor = m_otherColors[CommonPrefs.COLOR_TILE_BACK];
|
||||
}
|
||||
|
@ -498,7 +509,9 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
if ( (CELL_ISBLANK & flags) != 0 ) {
|
||||
markBlank( rect, pending );
|
||||
}
|
||||
|
||||
// frame the cell
|
||||
m_strokePaint.setColor( FRAME_GREY );
|
||||
m_canvas.drawRect( rect, m_strokePaint );
|
||||
|
||||
drawCrosshairs( rect, flags );
|
||||
|
@ -506,13 +519,44 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
return true;
|
||||
} // drawCell
|
||||
|
||||
private boolean m_arrowHintShown = false;
|
||||
public void drawBoardArrow( Rect rect, int bonus, boolean vert,
|
||||
int hintAtts, int flags )
|
||||
{
|
||||
// figure out if the background is more dark than light
|
||||
boolean useDark = darkOnLight();
|
||||
if ( m_blackArrow != useDark ) {
|
||||
m_blackArrow = useDark;
|
||||
m_downArrow = m_rightArrow = null;
|
||||
}
|
||||
Drawable arrow;
|
||||
if ( vert ) {
|
||||
if ( null == m_downArrow ) {
|
||||
m_downArrow = loadAndRecolor( R.drawable.downarrow, useDark );
|
||||
}
|
||||
arrow = m_downArrow;
|
||||
} else {
|
||||
if ( null == m_rightArrow ) {
|
||||
m_rightArrow = loadAndRecolor( R.drawable.rightarrow, useDark );
|
||||
}
|
||||
arrow = m_rightArrow;
|
||||
}
|
||||
|
||||
rect.inset( 2, 2 );
|
||||
Drawable arrow = vert? m_downArrow : m_rightArrow;
|
||||
arrow.setBounds( rect );
|
||||
arrow.draw( m_canvas );
|
||||
|
||||
if ( !m_arrowHintShown ) {
|
||||
m_arrowHintShown = true;
|
||||
m_viewHandler.post( new Runnable() {
|
||||
public void run() {
|
||||
m_parent.
|
||||
showNotAgainDlgThen( R.string.not_again_arrow,
|
||||
R.string.key_notagain_arrow,
|
||||
null );
|
||||
}
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
public boolean trayBegin ( Rect rect, int owner, int dfs )
|
||||
|
@ -617,7 +661,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
|
||||
public void drawMiniWindow( String text, Rect rect )
|
||||
{
|
||||
clearToBack( rect );
|
||||
fillRect( rect, WHITE );
|
||||
|
||||
m_fillPaint.setTextSize( k_miniTextSize );
|
||||
m_fillPaint.setTextAlign( Paint.Align.CENTER );
|
||||
|
@ -679,16 +723,16 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
m_canvas.clipRect( rect );
|
||||
|
||||
if ( clearBack ) {
|
||||
clearToBack( rect );
|
||||
fillRect( rect, WHITE );
|
||||
}
|
||||
|
||||
if ( isCursor || notEmpty ) {
|
||||
|
||||
if ( clearBack ) {
|
||||
int indx = isCursor? CommonPrefs.COLOR_FOCUS
|
||||
: CommonPrefs.COLOR_TILE_BACK;
|
||||
fillRect( rect, m_otherColors[indx] );
|
||||
int color = m_otherColors[isCursor? CommonPrefs.COLOR_FOCUS
|
||||
: CommonPrefs.COLOR_TILE_BACK];
|
||||
if ( !clearBack ) {
|
||||
color &= 0x7FFFFFFF; // translucent if being dragged.
|
||||
}
|
||||
fillRect( rect, color );
|
||||
|
||||
m_fillPaint.setColor( m_playerColors[m_trayOwner] );
|
||||
|
||||
|
@ -802,11 +846,6 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
m_canvas.drawRect( rect, m_fillPaint );
|
||||
}
|
||||
|
||||
private void clearToBack( Rect rect )
|
||||
{
|
||||
fillRect( rect, m_otherColors[CommonPrefs.COLOR_BKGND] );
|
||||
}
|
||||
|
||||
private void figureFontDims()
|
||||
{
|
||||
if ( null == m_fontDims ) {
|
||||
|
@ -891,4 +930,41 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
|
|||
m_strokePaint.setColor( curColor );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean darkOnLight()
|
||||
{
|
||||
int background = m_otherColors[ CommonPrefs.COLOR_BKGND ];
|
||||
if ( background != m_backgroundUsed ) {
|
||||
m_backgroundUsed = background;
|
||||
|
||||
int sum = 0;
|
||||
for ( int ii = 0; ii < 3; ++ii ) {
|
||||
sum += background & 0xFF;
|
||||
background >>= 8;
|
||||
}
|
||||
m_darkOnLight = sum > (127*3);
|
||||
}
|
||||
return m_darkOnLight;
|
||||
}
|
||||
|
||||
private Drawable loadAndRecolor( int resID, boolean useDark )
|
||||
{
|
||||
Resources res = getResources();
|
||||
Drawable arrow = res.getDrawable( resID );
|
||||
|
||||
if ( !useDark ) {
|
||||
Bitmap src = ((BitmapDrawable)arrow).getBitmap();
|
||||
Bitmap bitmap = src.copy( Bitmap.Config.ARGB_8888, true );
|
||||
for ( int xx = 0; xx < bitmap.getWidth(); ++xx ) {
|
||||
for( int yy = 0; yy < bitmap.getHeight(); ++yy ) {
|
||||
if ( BLACK == bitmap.getPixel( xx, yy ) ) {
|
||||
bitmap.setPixel( xx, yy, WHITE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
arrow = new BitmapDrawable(bitmap);
|
||||
}
|
||||
return arrow;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import android.database.Cursor;
|
|||
import java.util.StringTokenizer;
|
||||
import android.content.ContentValues;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.eehouse.android.xw4.jni.*;
|
||||
|
@ -356,7 +357,8 @@ public class DBUtils {
|
|||
}
|
||||
}
|
||||
|
||||
public static void saveGame( Context context, String path, byte[] bytes )
|
||||
public static void saveGame( Context context, String path, byte[] bytes,
|
||||
boolean setCreate )
|
||||
{
|
||||
initDB( context );
|
||||
synchronized( s_dbHelper ) {
|
||||
|
@ -366,6 +368,12 @@ public class DBUtils {
|
|||
ContentValues values = new ContentValues();
|
||||
values.put( DBHelper.SNAPSHOT, bytes );
|
||||
|
||||
long timestamp = new Date().getTime();
|
||||
if ( setCreate ) {
|
||||
values.put( DBHelper.CREATE_TIME, timestamp );
|
||||
}
|
||||
values.put( DBHelper.LASTPLAY_TIME, timestamp );
|
||||
|
||||
int result = db.update( DBHelper.TABLE_NAME_SUM,
|
||||
values, selection, null );
|
||||
if ( 0 == result ) {
|
||||
|
|
|
@ -37,7 +37,7 @@ public class GameConverter {
|
|||
Utils.logf( "GameConverter::convert() converting %s",
|
||||
game );
|
||||
byte[] bytes = savedGame( context, game );
|
||||
DBUtils.saveGame( context, game, bytes );
|
||||
DBUtils.saveGame( context, game, bytes, true );
|
||||
context.deleteFile( game );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ public class GameUtils {
|
|||
if ( null != addr ) {
|
||||
XwJNI.comms_setAddr( gamePtr, addr );
|
||||
}
|
||||
saveGame( context, gamePtr, gi, pathOut );
|
||||
saveGame( context, gamePtr, gi, pathOut, true );
|
||||
|
||||
GameSummary summary = new GameSummary( gi );
|
||||
XwJNI.game_summarize( gamePtr, summary );
|
||||
|
@ -142,27 +142,29 @@ public class GameUtils {
|
|||
}
|
||||
|
||||
public static void saveGame( Context context, int gamePtr,
|
||||
CurGameInfo gi, String path )
|
||||
CurGameInfo gi, String path,
|
||||
boolean setCreate )
|
||||
{
|
||||
byte[] stream = XwJNI.game_saveToStream( gamePtr, gi );
|
||||
saveGame( context, stream, path );
|
||||
saveGame( context, stream, path, setCreate );
|
||||
}
|
||||
|
||||
public static void saveGame( Context context, int gamePtr,
|
||||
CurGameInfo gi )
|
||||
{
|
||||
saveGame( context, gamePtr, gi, newName( context ) );
|
||||
saveGame( context, gamePtr, gi, newName( context ), false );
|
||||
}
|
||||
|
||||
public static void saveGame( Context context, byte[] bytes, String path )
|
||||
public static void saveGame( Context context, byte[] bytes,
|
||||
String path, boolean setCreate )
|
||||
{
|
||||
DBUtils.saveGame( context, path, bytes );
|
||||
DBUtils.saveGame( context, path, bytes, setCreate );
|
||||
}
|
||||
|
||||
public static String saveGame( Context context, byte[] bytes )
|
||||
{
|
||||
String name = newName( context );
|
||||
saveGame( context, bytes, name );
|
||||
saveGame( context, bytes, name, false );
|
||||
return name;
|
||||
}
|
||||
|
||||
|
@ -372,7 +374,7 @@ public class GameUtils {
|
|||
CommonPrefs.get( context ) );
|
||||
gi.dictName = dict;
|
||||
|
||||
saveGame( context, gamePtr, gi, path );
|
||||
saveGame( context, gamePtr, gi, path, false );
|
||||
|
||||
GameSummary summary = new GameSummary( gi );
|
||||
XwJNI.game_summarize( gamePtr, summary );
|
||||
|
@ -415,7 +417,7 @@ public class GameUtils {
|
|||
XwJNI.comms_setAddr( gamePtr, car );
|
||||
}
|
||||
|
||||
GameUtils.saveGame( context, gamePtr, gi, path );
|
||||
saveGame( context, gamePtr, gi, path, false );
|
||||
|
||||
GameSummary summary = new GameSummary( gi );
|
||||
XwJNI.game_summarize( gamePtr, summary );
|
||||
|
|
|
@ -134,7 +134,7 @@ public class GamesList extends XWListActivity
|
|||
});
|
||||
break;
|
||||
default:
|
||||
Assert.fail();
|
||||
// just drop it; super.onCreateDialog likely failed
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ import android.preference.PreferenceManager;
|
|||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MenuInflater;
|
||||
import java.util.HashSet;
|
||||
|
||||
public class PrefsActivity extends PreferenceActivity
|
||||
implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
@ -38,7 +39,11 @@ public class PrefsActivity extends PreferenceActivity
|
|||
private static final int REVERT_COLORS = 1;
|
||||
private static final int REVERT_ALL = 2;
|
||||
|
||||
private String[] m_keys;
|
||||
private HashSet<String> m_keys;
|
||||
private String m_boardThemeKey;
|
||||
private String m_keyEmpty;
|
||||
private String m_whiteOnBlack;
|
||||
private String m_blackOnWhite;
|
||||
|
||||
@Override
|
||||
protected Dialog onCreateDialog( int id )
|
||||
|
@ -118,17 +123,22 @@ public class PrefsActivity extends PreferenceActivity
|
|||
R.string.key_initial_player_minutes,
|
||||
R.string.key_default_dict,
|
||||
R.string.key_default_phonies,
|
||||
R.string.key_board_theme,
|
||||
};
|
||||
|
||||
SharedPreferences sp
|
||||
= PreferenceManager.getDefaultSharedPreferences( this );
|
||||
m_keys = new String[ textKeyIds.length ];
|
||||
m_keys = new HashSet<String>( textKeyIds.length );
|
||||
for ( int ii = 0; ii < textKeyIds.length; ++ii ) {
|
||||
int id = textKeyIds[ii];
|
||||
String key = getString( id );
|
||||
setSummary( sp, key );
|
||||
m_keys[ii] = key;
|
||||
m_keys.add( key );
|
||||
}
|
||||
m_boardThemeKey = getString( R.string.key_board_theme );
|
||||
m_keyEmpty = getString( R.string.key_empty );
|
||||
m_whiteOnBlack = getString( R.string.white_on_black );
|
||||
m_blackOnWhite = getString( R.string.black_on_white );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -149,11 +159,28 @@ public class PrefsActivity extends PreferenceActivity
|
|||
|
||||
public void onSharedPreferenceChanged( SharedPreferences sp, String key )
|
||||
{
|
||||
for ( String akey : m_keys ) {
|
||||
if ( akey.equals( key ) ) {
|
||||
setSummary( sp, key );
|
||||
if ( m_keys.contains( key ) ) {
|
||||
setSummary( sp, key );
|
||||
}
|
||||
|
||||
// Change those color elements that follow the "themes" --
|
||||
// currently only key_empty
|
||||
while ( m_boardThemeKey.equals( key ) ) { // while allows break
|
||||
String newValue = sp.getString( key, "" );
|
||||
|
||||
int color;
|
||||
if ( m_whiteOnBlack.equals( newValue ) ) {
|
||||
color = 0xFF000000;
|
||||
} else if ( m_blackOnWhite.equals( newValue ) ) {
|
||||
color = 0xFFFFFFFF;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.putInt( m_keyEmpty, color );
|
||||
editor.commit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* -*- compile-command: "cd ../../../../../../; ant install"; -*- */
|
||||
/*
|
||||
* Copyright 2009-2010 by Eric House (xwords@eehouse.org). All
|
||||
* rights reserved.
|
||||
|
@ -19,8 +20,11 @@
|
|||
|
||||
package org.eehouse.android.xw4.jni;
|
||||
|
||||
import org.eehouse.android.xw4.XWActivity;
|
||||
|
||||
public interface BoardHandler {
|
||||
|
||||
void startHandling( JNIThread thread, int gamePtr, CurGameInfo gi );
|
||||
void startHandling( XWActivity parent, JNIThread thread,
|
||||
int gamePtr, CurGameInfo gi );
|
||||
|
||||
}
|
||||
|
|
|
@ -262,7 +262,7 @@ public class JNIThread extends Thread {
|
|||
GameSummary summary = new GameSummary( m_gi );
|
||||
XwJNI.game_summarize( m_jniGamePtr, summary );
|
||||
byte[] state = XwJNI.game_saveToStream( m_jniGamePtr, null );
|
||||
GameUtils.saveGame( m_context, state, m_path );
|
||||
GameUtils.saveGame( m_context, state, m_path, false );
|
||||
DBUtils.saveSummary( m_context, m_path, summary );
|
||||
break;
|
||||
|
||||
|
|
|
@ -1689,7 +1689,7 @@ server_setGameOverListener( ServerCtxt* server, GameOverListener gol,
|
|||
{
|
||||
server->vol.gameOverListener = gol;
|
||||
server->vol.gameOverData = data;
|
||||
} /* server_setTurnChangeListener */
|
||||
} /* server_setGameOverListener */
|
||||
|
||||
static XP_Bool
|
||||
storeBadWords( XP_UCHAR* word, void* closure )
|
||||
|
|
|
@ -37,6 +37,7 @@ ifdef CURSES_SMALL_SCREEN
|
|||
DO_CURSES += -DCURSES_SMALL_SCREEN
|
||||
endif
|
||||
DO_GTK = -DPLATFORM_GTK
|
||||
# DO_GTK += -DUSE_CAIRO
|
||||
|
||||
# uncomment for standalone build
|
||||
# STANDALONE = -DXWFEATURE_STANDALONE_ONLY
|
||||
|
@ -178,8 +179,8 @@ endif
|
|||
|
||||
ifneq (,$(findstring DPLATFORM_GTK,$(DEFINES)))
|
||||
LIBS += `pkg-config --libs gtk+-2.0`
|
||||
CFLAGS += `pkg-config --cflags gtk+-2.0` \
|
||||
-DGDK_DISABLE_DEPRECATED
|
||||
CFLAGS += `pkg-config --cflags gtk+-2.0`
|
||||
# CFLAGS += -DGDK_DISABLE_DEPRECATED
|
||||
POINTER_SUPPORT = -DPOINTER_SUPPORT
|
||||
endif
|
||||
|
||||
|
|
|
@ -22,8 +22,6 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#undef GDK_DISABLE_DEPRECATED
|
||||
|
||||
#include <gdk/gdkdrawable.h>
|
||||
|
||||
#include "gtkmain.h"
|
||||
|
@ -64,31 +62,75 @@ gtkInsetRect( XP_Rect* r, short i )
|
|||
|
||||
#define GTKMIN_W_HT 12
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
# define XP_UNUSED_CAIRO(var) UNUSED__ ## var __attribute__((unused))
|
||||
#else
|
||||
# define XP_UNUSED_CAIRO(var) var
|
||||
#endif
|
||||
|
||||
static void
|
||||
draw_rectangle( const GtkDrawCtx* dctx,
|
||||
GdkDrawable* XP_UNUSED_CAIRO(drawable),
|
||||
GdkGC* XP_UNUSED_CAIRO(gc),
|
||||
gboolean fill, gint left, gint top, gint width,
|
||||
gint height )
|
||||
{
|
||||
#ifdef USE_CAIRO
|
||||
cairo_rectangle( dctx->cr, left, top, width, height );
|
||||
cairo_stroke_preserve( dctx->cr );
|
||||
cairo_set_source_rgb( dctx->cr, 1, 1, 1 );
|
||||
/* if ( fill ) { */
|
||||
cairo_fill( dctx->cr );
|
||||
/* } else { */
|
||||
cairo_stroke( dctx->cr );
|
||||
/* } */
|
||||
fill = fill;
|
||||
#else
|
||||
dctx = dctx;
|
||||
gdk_draw_rectangle( drawable, gc, fill, left, top, width, height );
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
gtkFillRect( GtkDrawCtx* dctx, const XP_Rect* rect, const GdkColor* color )
|
||||
{
|
||||
#ifdef USE_CAIRO
|
||||
color = color;
|
||||
//gdk_cairo_set_source_color( dctx->cr, color );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, color );
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx), dctx->drawGC,
|
||||
TRUE,
|
||||
rect->left, rect->top, rect->width,
|
||||
rect->height );
|
||||
#endif
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx), dctx->drawGC, TRUE,
|
||||
rect->left, rect->top, rect->width,
|
||||
rect->height );
|
||||
}
|
||||
|
||||
static void
|
||||
set_color_cairo( const GtkDrawCtx* dctx, unsigned short red,
|
||||
unsigned short green, unsigned short blue )
|
||||
{
|
||||
GdkColor color = { red, green, blue };
|
||||
color = color;
|
||||
dctx = dctx;
|
||||
//gdk_cairo_set_source_color( dctx->cr, &color );
|
||||
}
|
||||
|
||||
static void
|
||||
gtkEraseRect( const GtkDrawCtx* dctx, const XP_Rect* rect )
|
||||
{
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawing_area->style->white_gc,
|
||||
TRUE, rect->left, rect->top,
|
||||
rect->width, rect->height );
|
||||
set_color_cairo( dctx, 0xFFFF, 0xFFFF, 0xFFFF );
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawing_area->style->white_gc,
|
||||
TRUE, rect->left, rect->top,
|
||||
rect->width, rect->height );
|
||||
} /* gtkEraseRect */
|
||||
|
||||
static void
|
||||
frameRect( GtkDrawCtx* dctx, const XP_Rect* rect )
|
||||
{
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC, FALSE, rect->left, rect->top,
|
||||
rect->width, rect->height );
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx), dctx->drawGC,
|
||||
FALSE, rect->left, rect->top,
|
||||
rect->width, rect->height );
|
||||
} /* frameRect */
|
||||
|
||||
#ifdef DRAW_WITH_PRIMITIVES
|
||||
|
@ -225,9 +267,14 @@ draw_string_at( GtkDrawCtx* dctx, PangoLayout* layout,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
frground = frground;
|
||||
bkgrnd = bkgrnd;
|
||||
#else
|
||||
gdk_draw_layout_with_colors( DRAW_WHAT(dctx), dctx->drawGC,
|
||||
xx, yy, layout,
|
||||
frground, bkgrnd );
|
||||
#endif
|
||||
} /* draw_string_at */
|
||||
|
||||
static void
|
||||
|
@ -248,8 +295,8 @@ drawBitmapFromLBS( GtkDrawCtx* dctx, const XP_Bitmap bm, const XP_Rect* rect )
|
|||
|
||||
pm = gdk_pixmap_new( DRAW_WHAT(dctx), nCols, nRows, -1 );
|
||||
|
||||
gdk_draw_rectangle( pm, dctx->drawing_area->style->white_gc, TRUE,
|
||||
0, 0, nCols, nRows );
|
||||
draw_rectangle( dctx, pm, dctx->drawing_area->style->white_gc, TRUE,
|
||||
0, 0, nCols, nRows );
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
|
@ -259,7 +306,10 @@ drawBitmapFromLBS( GtkDrawCtx* dctx, const XP_Bitmap bm, const XP_Rect* rect )
|
|||
for ( i = 0; i < 8; ++i ) {
|
||||
XP_Bool draw = ((byte & 0x80) != 0);
|
||||
if ( draw ) {
|
||||
#ifdef USE_CAIRO
|
||||
#else
|
||||
gdk_draw_point( pm, dctx->drawing_area->style->black_gc, x, y );
|
||||
#endif
|
||||
}
|
||||
byte <<= 1;
|
||||
if ( ++x == nCols ) {
|
||||
|
@ -273,6 +323,9 @@ drawBitmapFromLBS( GtkDrawCtx* dctx, const XP_Bitmap bm, const XP_Rect* rect )
|
|||
|
||||
XP_ASSERT( nBytes == -1 ); /* else we're out of sync */
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
rect = rect;
|
||||
#else
|
||||
gdk_draw_drawable( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
(GdkDrawable*)pm, 0, 0,
|
||||
|
@ -280,7 +333,7 @@ drawBitmapFromLBS( GtkDrawCtx* dctx, const XP_Bitmap bm, const XP_Rect* rect )
|
|||
rect->top+2,
|
||||
lbs->nCols,
|
||||
lbs->nRows );
|
||||
|
||||
#endif
|
||||
g_object_unref( pm );
|
||||
} /* drawBitmapFromLBS */
|
||||
|
||||
|
@ -299,10 +352,10 @@ gtk_draw_destroyCtxt( DrawCtx* p_dctx )
|
|||
GtkDrawCtx* dctx = (GtkDrawCtx*)p_dctx;
|
||||
GtkAllocation* alloc = &dctx->drawing_area->allocation;
|
||||
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawing_area->style->white_gc,
|
||||
TRUE,
|
||||
0, 0, alloc->width, alloc->height );
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawing_area->style->white_gc,
|
||||
TRUE,
|
||||
0, 0, alloc->width, alloc->height );
|
||||
|
||||
g_list_foreach( dctx->fontsPerSize, freer, NULL );
|
||||
g_list_free( dctx->fontsPerSize );
|
||||
|
@ -328,7 +381,11 @@ gtk_draw_boardBegin( DrawCtx* p_dctx, const XP_Rect* rect,
|
|||
dctx->cellWidth = width;
|
||||
dctx->cellHeight = height;
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->black );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->black );
|
||||
#endif
|
||||
|
||||
gdkrect = *(GdkRectangle*)rect;
|
||||
++gdkrect.width;
|
||||
|
@ -364,6 +421,9 @@ gtk_draw_vertScrollBoard( DrawCtx* p_dctx, XP_Rect* rect,
|
|||
ysrc = ydest + dist;
|
||||
}
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
dctx = dctx;
|
||||
#else
|
||||
gdk_draw_drawable( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
DRAW_WHAT(dctx),
|
||||
|
@ -373,7 +433,7 @@ gtk_draw_vertScrollBoard( DrawCtx* p_dctx, XP_Rect* rect,
|
|||
ydest,
|
||||
rect->width,
|
||||
rect->height - dist );
|
||||
|
||||
#endif
|
||||
if ( !down ) {
|
||||
rect->top += rect->height - dist;
|
||||
}
|
||||
|
@ -391,33 +451,37 @@ drawHintBorders( GtkDrawCtx* dctx, const XP_Rect* rect, HintAtts hintAtts)
|
|||
XP_Rect lrect = *rect;
|
||||
gtkInsetRect( &lrect, 1 );
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->black );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->black );
|
||||
#endif
|
||||
|
||||
if ( (hintAtts & HINT_BORDER_LEFT) != 0 ) {
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left, lrect.top,
|
||||
0, lrect.height);
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left, lrect.top,
|
||||
0, lrect.height);
|
||||
}
|
||||
if ( (hintAtts & HINT_BORDER_TOP) != 0 ) {
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left, lrect.top,
|
||||
lrect.width, 0/*rectInset.height*/);
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left, lrect.top,
|
||||
lrect.width, 0/*rectInset.height*/);
|
||||
}
|
||||
if ( (hintAtts & HINT_BORDER_RIGHT) != 0 ) {
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left+lrect.width,
|
||||
lrect.top,
|
||||
0, lrect.height);
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left+lrect.width,
|
||||
lrect.top,
|
||||
0, lrect.height);
|
||||
}
|
||||
if ( (hintAtts & HINT_BORDER_BOTTOM) != 0 ) {
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left,
|
||||
lrect.top+lrect.height,
|
||||
lrect.width, 0 );
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, lrect.left,
|
||||
lrect.top+lrect.height,
|
||||
lrect.width, 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -462,12 +526,16 @@ gtk_draw_drawCell( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* letter,
|
|||
gtkInsetRect( &rectInset, 1 );
|
||||
|
||||
if ( showGrid ) {
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->black );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->black );
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE,
|
||||
rect->left, rect->top, rect->width,
|
||||
rect->height );
|
||||
#endif
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE,
|
||||
rect->left, rect->top, rect->width,
|
||||
rect->height );
|
||||
}
|
||||
|
||||
/* We draw just an empty, potentially colored, square IFF there's nothing
|
||||
|
@ -483,10 +551,14 @@ gtk_draw_drawCell( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* letter,
|
|||
foreground = NULL;
|
||||
}
|
||||
if ( !!foreground ) {
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, foreground );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, foreground );
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx), dctx->drawGC, TRUE,
|
||||
rectInset.left, rectInset.top,
|
||||
rectInset.width+1, rectInset.height+1 );
|
||||
#endif
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx), dctx->drawGC, TRUE,
|
||||
rectInset.left, rectInset.top,
|
||||
rectInset.width+1, rectInset.height+1 );
|
||||
}
|
||||
}
|
||||
if ( (flags & CELL_ISSTAR) != 0 ) {
|
||||
|
@ -499,13 +571,21 @@ gtk_draw_drawCell( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* letter,
|
|||
XP_Bool isBlank = (flags & CELL_ISBLANK) != 0;
|
||||
GdkColor* foreground;
|
||||
if ( cursor ) {
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, cursor );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, cursor );
|
||||
#endif
|
||||
} else if ( !highlight ) {
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->tileBack );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->tileBack );
|
||||
#endif
|
||||
}
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx), dctx->drawGC, TRUE,
|
||||
rectInset.left, rectInset.top,
|
||||
rectInset.width+1, rectInset.height+1 );
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx), dctx->drawGC, TRUE,
|
||||
rectInset.left, rectInset.top,
|
||||
rectInset.width+1, rectInset.height+1 );
|
||||
|
||||
if ( isBlank && 0 == strcmp("_",letter ) ) {
|
||||
letter = "?";
|
||||
|
@ -517,6 +597,8 @@ gtk_draw_drawCell( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* letter,
|
|||
XP_GTK_JUST_CENTER, foreground, cursor );
|
||||
|
||||
if ( isBlank ) {
|
||||
#ifdef USE_CAIRO
|
||||
#else
|
||||
gdk_draw_arc( DRAW_WHAT(dctx), dctx->drawGC,
|
||||
0, /* filled */
|
||||
rect->left, /* x */
|
||||
|
@ -524,6 +606,7 @@ gtk_draw_drawCell( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* letter,
|
|||
rect->width,/*width, */
|
||||
rect->height,/*width, */
|
||||
0, 360*64 );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -547,7 +630,7 @@ gtk_draw_invertCell( DrawCtx* XP_UNUSED(p_dctx),
|
|||
/* gdk_gc_set_function( dctx->drawGC, GDK_INVERT ); */
|
||||
|
||||
/* gdk_gc_set_clip_rectangle( dctx->drawGC, (GdkRectangle*)rect ); */
|
||||
/* gdk_draw_rectangle( DRAW_WHAT(dctx), dctx->drawGC, */
|
||||
/* draw_rectangle( DRAW_WHAT(dctx), dctx->drawGC, */
|
||||
/* TRUE, rect->left, rect->top, */
|
||||
/* rect->width, rect->height ); */
|
||||
|
||||
|
@ -617,19 +700,23 @@ gtkDrawTileImpl( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* textP,
|
|||
}
|
||||
|
||||
/* frame the tile */
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->black );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->black );
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE,
|
||||
insetR.left, insetR.top, insetR.width,
|
||||
insetR.height );
|
||||
#endif
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE,
|
||||
insetR.left, insetR.top, insetR.width,
|
||||
insetR.height );
|
||||
|
||||
if ( (flags & CELL_HIGHLIGHT) != 0 ) {
|
||||
gtkInsetRect( &insetR, 1 );
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, insetR.left, insetR.top,
|
||||
insetR.width, insetR.height);
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
FALSE, insetR.left, insetR.top,
|
||||
insetR.width, insetR.height);
|
||||
}
|
||||
}
|
||||
} /* gtkDrawTileImpl */
|
||||
|
@ -693,11 +780,15 @@ gtk_draw_drawTrayDivider( DrawCtx* p_dctx, const XP_Rect* rect,
|
|||
--r.height;
|
||||
}
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->black );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->black );
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
!selected,
|
||||
r.left, r.top, r.width, r.height);
|
||||
#endif
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx),
|
||||
dctx->drawGC,
|
||||
!selected,
|
||||
r.left, r.top, r.width, r.height);
|
||||
|
||||
} /* gtk_draw_drawTrayDivider */
|
||||
|
||||
|
@ -940,7 +1031,11 @@ gtk_draw_score_drawPlayer( DrawCtx* p_dctx, const XP_Rect* rInner,
|
|||
gtkFillRect( dctx, rOuter, cursor );
|
||||
}
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->playerColors[playerNum] );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->playerColors[playerNum] );
|
||||
#endif
|
||||
|
||||
if ( dsi->selected ) {
|
||||
XP_Rect selRect = *rOuter;
|
||||
|
@ -960,9 +1055,9 @@ gtk_draw_score_drawPlayer( DrawCtx* p_dctx, const XP_Rect* rInner,
|
|||
}
|
||||
}
|
||||
|
||||
gdk_draw_rectangle( DRAW_WHAT(dctx), dctx->drawGC,
|
||||
TRUE, selRect.left, selRect.top,
|
||||
selRect.width, selRect.height );
|
||||
draw_rectangle( dctx, DRAW_WHAT(dctx), dctx->drawGC,
|
||||
TRUE, selRect.left, selRect.top,
|
||||
selRect.width, selRect.height );
|
||||
if ( hasCursor ) {
|
||||
gtkFillRect( dctx, rInner, cursor );
|
||||
}
|
||||
|
@ -1099,8 +1194,11 @@ gtk_draw_drawMiniWindow( DrawCtx* p_dctx, const XP_UCHAR* text,
|
|||
GtkDrawCtx* dctx = (GtkDrawCtx*)p_dctx;
|
||||
XP_Rect localR = *rect;
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
//gdk_cairo_set_source_color( dctx->cr, &dctx->black );
|
||||
#else
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->black );
|
||||
/* gdk_gc_set_clip_rectangle( dctx->drawGC, (GdkRectangle*)&localR ); */
|
||||
#endif
|
||||
|
||||
/* play some skanky games to get the shadow drawn under and to the
|
||||
right... */
|
||||
|
@ -1227,7 +1325,16 @@ gtkDrawCtxtMake( GtkWidget* drawing_area, GtkAppGlobals* globals )
|
|||
} else {
|
||||
window = GTK_WIDGET(drawing_area)->window;
|
||||
}
|
||||
window = GTK_WIDGET(drawing_area)->window;
|
||||
#ifdef USE_CAIRO
|
||||
dctx->cr = gdk_cairo_create( window );
|
||||
XP_LOGF( "dctx->cr=%p", dctx->cr );
|
||||
cairo_set_line_width( dctx->cr, 1.0 );
|
||||
cairo_set_line_cap( dctx->cr, CAIRO_LINE_CAP_SQUARE );
|
||||
cairo_set_source_rgb( dctx->cr, 0, 0, 0 );
|
||||
#else
|
||||
dctx->drawGC = gdk_gc_new( window );
|
||||
#endif
|
||||
}
|
||||
|
||||
map = gdk_colormap_get_system();
|
||||
|
|
|
@ -47,7 +47,11 @@ typedef struct GtkDrawCtx {
|
|||
GtkWidget* drawing_area;
|
||||
struct GtkAppGlobals* globals;
|
||||
|
||||
#ifdef USE_CAIRO
|
||||
cairo_t* cr;
|
||||
#else
|
||||
GdkGC* drawGC;
|
||||
#endif
|
||||
|
||||
GdkColor black;
|
||||
GdkColor white;
|
||||
|
|
Loading…
Reference in a new issue